1

このサンプルの XML-RPC 応答があります。

<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>

QML で dateTime() 関数 (およびその他の日付/時刻関連関数) を使用して dateTime をクエリする必要があります。このクエリを使用すると、常にエラーが返されます。

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()"

その形式を使用して、他のフィールドを正常にクエリできます。

4

1 に答える 1

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コードで変換/フォーマットを行う必要があります。

于 2012-08-01T17:38:07.807 に答える