2017-07-19 1 views
1

Disons que j'ai XML qui ressemble à ceci:Obtenir un seul élément enfant avec un nom donné avec Nokogiri

<paper> 
    <header> 
    </header> 
    <body> 
     <paragraph> 
     </paragraph> 
    </body> 
    <conclusion> 
    </conclusion> 
</paper> 

Est-il possible que je peux obtenir conclusion, sans faire une boucle laide comme:

for child in paper.children do 
    if child.name == "conclusion" 
     conclusion = child 
    end 
end 

puts conclusion 

Idéalement quelque chose comme python Element.find('conclusion').

+1

Avez-vous vu [ce tutoriel] (http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html)? Je l'ai trouvé en recherchant "nokogiri trouver l'élément par nom" – alexanderbird

Répondre

3

Essayez avec la méthode xpath.

node = doc.xpath("//conclusion")[0] 

ou, si vous le savez est juste un

node = doc.at_xpath("//conclusion") 
+0

Merci, '.at_xpath' était exactement ce que je cherchais. – Jones

+1

FWIW, vous pouvez également utiliser des sélecteurs de style CSS (par exemple 'doc.css ('conclusion')' ou 'doc.at_css ('conclusion')'. – orde

+0

Merci @orde, très agréable – Ursus