estoy analizar un documento XML que se ve algo como esto:Usando XPath con sencillo en el nodo devuelve elementos en todos los nodos
<MyBook>
<title>Favorite Poems</title>
<issn>123-456</issn>
<pages>45</pages>
</MyBook>
<MyBook>
<title>Chocolate Desserts</title>
<issn>654-098</issn>
<pages>100</pages>
</MyBook>
<MyBook>
<title>Jabberwocky</title>
<issn>454-545</issn>
<pages>19</pages>
</MyBook>
utilizo XPath para sacar los nodos MYBOOK e iterar a través de ellos, así:
xmldoc.xpath("//MyBook").each do |node|
mytitle=node.xpath("//title").text
puts mytitle
end
la salida se ve así:
Favorite PoemsChocolateDessertsJabberwocky
Favorite PoemsChocolateDessertsJabberwocky
Favorite PoemsChocolateDessertsJabberwocky
como si el nodo es realmente toda la xmldoc. Sin embargo, si imprimo el nodo dentro del iterador, cada vez que es lo que espero, solo un solo nodo MyBook. Necesito poder sacar los nodos secundarios de cada nodo sucesivamente, no todos los mismos nodos secundarios de todo el documento. ¿Qué estoy haciendo mal?
aha! Muchas gracias. Entonces, ¿no importa que aplique la expresión xpath a un nodo? – Sabrina
Poner '/' o '//' al frente hace que XPath sea una ruta absoluta. Cuando los usa, el evaluador XPath ignora el nodo de contexto y comienza en la raíz del documento. –
@JohnKugelman http://stackoverflow.com/questions/36412067/use-nokogiri-xpath-to-select-root-and-children-matching-expression – karl