ruby - regulares - xpath selenium
El uso de XPath en un solo nodo devuelve elementos en todos los nodos (2)
Cuando utiliza //title
busca todos los elementos <title>
que comienzan en la raíz del documento. Utilice simplemente title
para buscar títulos secundarios, o .//title
si desea buscar títulos incluso si están anidados dentro de otros elementos.
Estoy analizando un documento XML que se ve así:
<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 extraer los nodos de MyBook y repetirlos de la siguiente manera:
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 fuera realmente todo el 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?
Elimine // de la expresión xpath del título.