2011-12-29 27 views
7

he tenido los problemas al procesar un archivo XML con XmlListModel, este es el archivo XMLanálisis XML con 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> 

que analizarlo pizca de este 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()"} 

}

al final devuelve el estado listo pero sin elementos en el modelo, ¿qué estoy haciendo mal?

Respuesta

9

Su cadena de consulta no es correcta: debe escribir el nombre del elemento, incluido su espacio de nombre. La expresión XPath debe ser similar a lo siguiente:

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

Para usar espacios de nombres en una consulta, hay que declararlos como en XQuery. Aquí un ejemplo:

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