2017-07-19 1 views
1

Sagen wir, ich XML haben, die wie folgt aussieht:ein einzelnes untergeordnetes Element mit einem bestimmten Namen mit Nokogiri Erste

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

Gibt es eine Weise, die ich nur conclusion bekommen können, ohne wie eine hässliche Schleife zu machen:

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

puts conclusion 

Idealerweise so etwas wie Pythons Element.find('conclusion').

+1

Kennen Sie schon [dieses Tutorial] (http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html)? Ich fand es durch googeln für "nokogiri finden Element nach Name" – alexanderbird

Antwort

3

Versuchen Sie mit xpath Methode.

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

oder, wenn Sie wissen, ist nur ein

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

Danke, '.at_xpath' war genau das, was ich suchte. – Jones

+1

FWIW, können Sie auch CSS-Stil-Selektoren verwenden (z. B. 'doc.css ('conclusion') 'oder' doc.at_css (' conclusion ') '. – orde

+0

Danke @orde, sehr nett – Ursus

Verwandte Themen