2011-10-03 20 views
2

我有以下XML:XML基地和QML相對查詢組合

<response> 
<id>...</id> 
<category_id>...</category_id> 
<name>...</name> 
<detail> 
    <resource> 
     <label>...</label> 
     <value>...</value> 
    </resource> 
    <resource> 
     <label>...</label> 
     <value>...</value> 
    </resource> 
</detail> 
<price>...</price> 
<currency>...</currency> 
</response> 

我需要得到的ID,名稱,以及從一個XmlListModel標籤和值

我有以下代碼:

XmlListModel { 
    id: model 
    query:"/response" 
    source:"xml source" 

    XmlRole { name: "name"; query: "name/string()" } 
    XmlRole { name: "id"; query:"id/number()" } 
    XmlRole { name: "label"; query: "detail/resource/label/string()" } 
    XmlRole { name: "value"; query:"detail/resource/value/string()" } 
} 

這段代碼有什麼問題? 謝謝。

回答

2

的問題是,XPath查詢detail/resource/label/string()不會選擇在一個節點,因爲有多個resource節點。如果您不需要所有的resource節點,則只能選擇第一個與detail/resource[1]/label/string()

如果你需要的所有resource節點,你可以使用一個額外的XmlModel

import QtQuick 1.0 

Item { 

    property string xmlData: 
     "<response> 
      <id>1234</id> 
      <category_id>...</category_id> 
      <name>The Name</name> 
      <detail> 
       <resource> 
        <label>Res1</label> 
        <value>1</value> 
       </resource> 
       <resource> 
        <label>Res2</label> 
        <value>2</value> 
       </resource> 
      </detail> 
      <price>...</price> 
      <currency>...</currency> 
     </response>" 

    // model for general data 
    XmlListModel { 
     id: model 

     xml: xmlData 

     query:"/response" 

     XmlRole { name: "name"; query: "name/string()" } 
     XmlRole { name: "id"; query: "id/number()" } 
    } 

    // model for resource data 
    XmlListModel { 
     id: resModel 

     xml: xmlData 

     query: "/response/detail/resource" 

     XmlRole { name: "label"; query: "label/string()" } 
     XmlRole { name: "value"; query: "value/string()" } 
    } 
} 
+0

謝謝... 那有什麼關係,我究竟做了,但我一直在尋找一種更有效的解決方案。 –

+0

@h_kassem:什麼應該更有效率?你擔心使用兩個「XmlListModel」而不是一個? – hiddenbit

+0

首先:xml還包含照片和其他東西,所以至少我應該使用3到4個XmlListModel。 二:我必須確保所有論文模型完成,以實現裝載功能解析,如果我只有一個XmlListModel它更實用,但無論如何,謝謝:) –