2012-08-01 43 views
1

XPath表达式我有这样的样本XML-RPC响应:为datetime.iso8601标签

<struct> 
    <member><name>post_id</name><value><string>131</string></value></member> 
    <member><name>post_title</name><value><string>Test with secret password</string></value></member> 
    <member><name>post_date</name><value><dateTime.iso8601>20080404T09:38:05</dateTime.iso8601></value></member> 
    <member><name>post_thumbnail</name><value><string>http://localhost/~herop-kde/wordpress/wp-content/themes/twentyeleven/images/thumbnails/119.jpg</string></value></member> 
</struct> 

我需要查询使用的dateTime()函数(与时间函数和其它日期/)在QML的日期时间。始终使用该查询返回错误:

struct/member[name='post_date']/value/dateTime.iso8601/dateTime() 

错误:

Error XPST0017 in [...] at line 2, column 96: fn:dateTime($arg1 as xs:date?, $arg2 as xs:time?) as xs:dateTime? requires at least 2 argument(s). 0 is therefore invalid. 
[...]/Main.qml:37:13: QML XmlRole: invalid query: "struct/member[name='post_date']/value/dateTime.iso8601/dateTime()" 

我仍然可以使用这种格式来成功地查询等多个领域。

回答

1

如果XML包含格式正确的ISO8601日期(2008-04-04T09:38:05)你可以使用xs:dateTime功能:

ListView { 
    // ... 
    model: XmlListModel { 
     // ... 
     query: "/struct/member" 
     XmlRole { 
      name: "dateTime" 
      query: "xs:dateTime(value/dateTime.iso8601)" 
     } 
    } 
    delegate: Text { 
     text: model.dateTime 
    } 
} 

否则,你就必须把它作为串并做转换/格式化在你的JavaScript代码中。

+0

Wordpress将日期返回为20080404T09:38:05,年,月和日之间没有连字符。我认为这是我看到的错误的原因。我的解决方案是从WP获取时间戳而不是日期时间,并使用JS来解析它。 – herophuong 2012-08-02 03:21:18