Es posible encontrar un elemento xml, buscando con el valor de un elemento secundario?

Así que para XML, tales como:

<route>
    <name>Lakeway</name>
    <abrv>LAKE</abrv>
    <eta>
        <time>00:30</time>
        <dest>MAIN</dest>
    </eta>
</route>

Si sólo tengo el valor de los abrv, ¿cómo puedo analizar el xml con el fin de obtener en el eta etiquetas » elementos secundarios?

¿Se puede hacer algo con jQuery sin bucle a través de cada elemento y la comparación de los valores de la variable definida? O es que hay una manera mejor de hacer esto?

EDICIÓN:

Estoy tratando de analizar un feed XML de otro dominio. No estoy seguro de si puedo hacer eso con el xmlParse la función, o si voy a tener que utilizar jQuery, Ajax funciones?

InformationsquelleAutor simon | 2011-08-02

2 Comentarios

  1. 1

    Tal vez algo como esto:

    var xmlString = "<route><name>Lakeway</name><abrv>LAKE</abrv><eta><time>00:30</time><dest>MAIN</dest></eta></route>",
    xmlDoc = $.parseXML( xmlString ),
    $xml = $( xmlDoc ),
    $abrv = $xml.find( "abrv" ).text() == "LAKE" ? $xml.find( "abrv" ) : false;
    
    var time = $abrv.next().children("time").text();
    var dest = $abrv.next().children("dest").text();
    
    alert(time + " " + dest);

    http://jsfiddle.net/jensbits/UH2m5/

    Es de esperar, que podría empezar.

    • ¿Cómo puedo usar esto con un archivo XML externo? Eso es lo que yo estaba buscando en realidad.
    • Usted tendrá que traer el xml en el uso de otro método. Consulte stackoverflow.com/questions/1292486/…
    • OK, así que he usado un simple proxy para obtener el XML, pero tengo otra pregunta. Hay una diferencia entre el uso de la parseXML la función y el uso de los us $.obtener la función de ajax? Así que si en lugar de declarar una cadena xml, si puedo usar $.llegar a obtener xml, debería ser capaz de utilizar la misma selectores como se describen arriba?
    • Sí, usted debe ser capaz de en la declaración xml.
  2. 2

    Podría utilizar el contains filtro para filtrar los nodos basados en este valor.

    Algo como,

    $(xml).find('abrv:contains(LAKE) + eta > *')

    devolverá un objeto jQuery con dos elementos para el documento de muestra.

    <time>00:30</time>
    <dest>MAIN</dest>

    He aquí un ejemplo.

Dejar respuesta

Please enter your comment!
Please enter your name here