Tengo una pregunta muy simple que parece que no puedo encontrar una respuesta.Accediendo a un conjunto de nodos en una consulta XPath de JavaScript
Quiero comprimir dos instrucciones XPath (que obtienen valores de atributo). Aprendí sobre el operador |
, escuchando cómo devuelve conjuntos de nodos.
var getdata = xmldoc.evaluate
(
'/foo/bar[@world=\''+hello+'\']/child::*/attribute::name
|/foo/bar[@world=\''hello+'\']/child::*/attribute::id',
xmldoc, null, XPathResult.ANY_TYPE, null
);
Para cualquiera que se pregunte, no, yo no formato a mis cuerdas de evaluación de esa manera ... aunque, en cierto modo me gusta ahora que he escrito a cabo. De todos modos, así es como lo probé.
alert(getItemData.iterateNext().childNodes[0].nodeValue);
Eso funciona! Pero solo devuelve el primero. Mientras escribía esto, intenté con .length
e hice un descanso ... solo cuenta un elemento. ¿Fui engañado sobre el concepto de |
? ¿Cómo puedo obtener un set y luego revisarlo?
documento XML, según lo solicitado.
<?xml version="1.0" encoding="ISO-8859-1"?>
<foo>
<bar world="hello" id="1">
<subbar name="item1" id="2">
</subbar>
</bar>
<bar world="bye" id="3">
<subbar name="item2" id="4">
</subbar>
</bar>
</foo>
Editar: Actualmente estoy usando una función que toma el elemento en lugar del atributo, pero me gustaría conocer a la otra manera. A menos que lo que estoy haciendo sea la mejor manera.
¿También puede publicar también el documento XML que está aplicando la declaración XPath? – orangepips