L’utilisation de XPath sur un seul nœud renvoie des éléments dans tous les nœuds

Je suis en train d’parsingr un document XML qui ressemble à ceci:

 Favorite Poems 123-456 45   Chocolate Desserts 654-098 100   Jabberwocky 454-545 19  

J’utilise xpath pour extraire les nœuds MyBook et les parcourir comme suit:

 xmldoc.xpath("//MyBook").each do |node| mytitle=node.xpath("//title").text puts mytitle end 

la sortie ressemble à ceci:

 Favorite PoemsChocolateDessertsJabberwocky Favorite PoemsChocolateDessertsJabberwocky Favorite PoemsChocolateDessertsJabberwocky 

comme si le noeud était vraiment le xmldoc entier. Cependant, si j’imprime le nœud dans l’iterator, chaque fois que c’est ce à quoi je m’attend, juste un seul nœud MyBook. Je dois pouvoir extraire les nœuds enfants de chaque nœud successivement, pas tous du même type de nœud enfant de l’ensemble du document. Qu’est-ce que je fais mal?

Lorsque vous utilisez //title recherchez tous les éléments partir de la racine du document. Utilisez simplement title pour rechercher des titres enfants, ou .//title si vous souhaitez rechercher des titres même s’ils sont nesteds à l’intérieur d’autres éléments.

Supprimez le // de l’expression xpath du titre.