2011-12-29 94 views
7

我一直有與解析的XmlListModel xml文件的問題,這是XML文件解析XML與QML XmlListModel

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
    <SOAP-ENV:Body> 
     <ns1:searchResponse xmlns:ns1="http://tempuri.org"> 
      <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="unnamed_struct_use_soapval[10]"> 
       <item> 
        <title xsi:type="xsd:string">Es Messi deportista del año en Israel</title> 
        <excerpt xsi:type="xsd:string">El grupo editorial.............</excerpt> 
        <img xsi:type="xsd:string">http://www.noticiasmvs.com/media/fotos/9edd0407a7bd0a47df3ece7869678c4a.jpg</img> 
        <url xsi:type="xsd:string">http://www.noticiasmvs.com/xmlapp/article.php?noticia_id=52872</url> 
        <pubdate xsi:type="xsd:string">miércoles 28 de diciembre de 2011, 03:01:54</pubdate> 
       </item> 
       <item> 
        <title xsi:type="xsd:string">Primera ronda de los playoffs NBA</title> 
        <excerpt xsi:type="xsd:string">Resultados de los partidos ya disputados y programa de los que restan por jugar de la primera ronda de los playoffs de la NBA</excerpt> 
        <img xsi:type="xsd:string">  http://www.noticiasmvs.com/media/fotos/7b9e23b87817132e9a1771cad7de819d.jpg</img> 
        <url xsi:type="xsd:string">http://www.noticiasmvs.com/xmlapp/article.php?noticia_id=4982</url> 
        <pubdate xsi:type="xsd:string">viernes 30 de abril de 2010, 01:27:17</pubdate> 
       </item> 
      </return> 
     </ns1:searchResponse> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

我解析它白衣這個XmlListModel

XmlListModel { 
    query: "/SOAP-ENV/SOAP-ENV/ns1/return/item" 

    id:searchParser 
    XmlRole{ name: "title"; query: "title/string()"} 
    XmlRole{ name: "excerpt"; query: "excerpt/string()"} 
    XmlRole{ name: "img"; query: "img/string()"} 
    XmlRole{ name: "url"; query: "url/string()"} 
    XmlRole{ name: "pubdate"; query: "pubdate/string()"} 

}

最後它返回狀態,但模型中沒有元素,我做錯了什麼?

回答

9

您的查詢字符串不正確:您必須編寫包含其名稱空間的元素名稱。 XPath表達式應該如下所示:

/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:searchResponse/return/item 

要在查詢中使用名稱空間,必須將它們聲明爲在XQuery中。這裏舉一個例子:

import QtQuick 1.1 

Rectangle { 
    XmlListModel { 
     id: searchParser 

     source: "data.xml" // contains XML content 
     query: "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:searchResponse/return/item" 

     namespaceDeclarations: "declare namespace SOAP-ENV = 'http://schemas.xmlsoap.org/soap/envelope/'; 
           declare namespace ns1 = 'http://tempuri.org';" 

     XmlRole { name: "title"; query: "title/string()" } 
     XmlRole { name: "excerpt"; query: "excerpt/string()" } 
     XmlRole { name: "img";  query: "img/string()" } 
     XmlRole { name: "url";  query: "url/string()" } 
     XmlRole { name: "pubdate"; query: "pubdate/string()" } 

     onCountChanged: console.log("count:", count) 
    } 
}