sto parsing di un documento XML che sembra qualcosa di simile:Utilizzando XPath sul singolo nodo restituisce gli elementi in tutti i nodi
<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>
Io uso XPath per tirare fuori i nodi MyBook e scorrere attraverso di loro in questo modo:
xmldoc.xpath("//MyBook").each do |node|
mytitle=node.xpath("//title").text
puts mytitle
end
l'output è simile al seguente:
Favorite PoemsChocolateDessertsJabberwocky
Favorite PoemsChocolateDessertsJabberwocky
Favorite PoemsChocolateDessertsJabberwocky
come se il nodo è in realtà l'intera xmldoc. Tuttavia se stampo il nodo all'interno dell'iteratore, ogni volta che è ciò che mi aspetto, solo un singolo nodo MyBook. Devo essere in grado di estrarre i nodi figlio da ciascun nodo successivamente, non tutti dello stesso tipo di nodo figlio dall'intero documento. Che cosa sto facendo di sbagliato?
aha! Grazie mille. Quindi non importa che sto applicando l'espressione xpath a un nodo? – Sabrina
Mettere '/' o '//' in primo piano rende l'XPath un percorso assoluto. Quando si utilizzano quelli, il programma di valutazione XPath ignora il nodo di contesto e inizia dalla radice del documento. –
@JohnKugelman http://stackoverflow.com/questions/36412067/use-nokogiri-xpath-to-select-root-and-children-matching-expression – karl