Análisis de XML en webos para enyo framework

por favor ayúdame con el siguiente problema.

el problema está en xml al analizar mi código xml es:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
                <root type="object">
                   <codeListValue type="object">
        <personnelCategory type="array">
          <item type="string">Regular</item>
          <item type="string">International</item>
          <item type="string">Contractor</item>
          <item type="string">System</item>
          <item type="string">Employee</item>
        </personnelCategory>
    <pcImages type="array">
          <item type="string">Windows</item>
          <item type="string">Linux</item>
          <item type="string">MAC OS</item>
          <item type="string">Engineering Image</item>
        </pcImages>

</codeListValue>
</root> 

el código de análisis es el mismo que en web os sdk. La parte de análisis está aquí:

parseXML: function() {      
    this.items = [];
    //this.path="/root";
    this.url='Values.xml';
    this.$.getGoogleResults.url = this.url;
    this.$.getGoogleResults.call();
},

... ... gotResultsSuccess: function (inSender, inResponse) {

    var xmlstring = inResponse;
    var parser = new DOMParser();
    var xmlobject = parser.parseFromString(xmlstring, "text/xml");

    var nodes = document.evaluate('/root', xmlobject, null, XPathResult.ANY_TYPE, null);


    var result = nodes.iterateNext();
    //alert(result.textContent);
    var i=0;
    while(result)
            {

        this.items[i] = result.childNodes[0].nodeValue;
        i++;    
        result=nodes.iterateNext();
    }
    this.items=result.textContent;
    this.$.header.setContent(this.items);// [ this is a header component i have defined and i am setting its content here]
        },

Obtengo el resultado como Sistema de contratista internacional regular ... Imagen de ingeniería

el contenido de texto completo en el XML se muestra en serie. ¿Cómo obtengo nodos individuales y nodos secundarios? Estoy obteniendo valores nulos para todos estos. Por favor, ayude con algunos ejemplos de código.

Gracias :)

preguntado el 10 de mayo de 11 a las 13:05

2 Respuestas

El problema en su código es que el ciclo funciona solo una vez, es decir, solo hay un nodo hijo. El siguiente código recuperará todos los nodos secundarios.

var nodes = document.evaluate('/root/codeListValue', xmlobject, null, XPathResult.ANY_TYPE, null);


    var result = nodes.iterateNext();
    //alert(result.textContent);
    var i=0;
    while(i<result.getElementsByTagName('item').length)
            {

        this.items[i] = result.getElementsByTagName('item')[i].childNodes[0].nodeValue;
        i++;    

    }

¡Espero que esto ayude!

Respondido 05 ago 11, 11:08

No estoy muy seguro de lo que quiere hacer, pero así es como trabajo con xml:

Utilice un componente WebService y establezca handleAs como xml.

En la función onsuccess, simplemente tome el parámetro de resultado y haga:

res =  result.getElementByName('some_element').

Esto devolverá todos los elementos llamados "some_element" en una matriz.

Puede leer más sobre el análisis xml de JavaScript en http://www.w3schools.com/xml/xml_dom.asp

Respondido 28 Jul 11, 19:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.