2017-07-19 19 views
1

比方说,我有XML,看起来像这样:获得一个子元素与给定的名称以引入nokogiri

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

有没有办法我就可以得到conclusion,未做一个丑陋的循环,如:

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

puts conclusion 

理想情况下,类似python的Element.find('conclusion')

+1

你见过[本教程(http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html)?我发现它通过谷歌搜索“nokogiri查找元素的名称” – alexanderbird

回答

3

试用xpath方法。

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

,或者,如果你知道只是一个

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

谢谢,'.at_xpath'正是我一直在寻找的。 – Jones

+1

FWIW,你也可以使用CSS风格的选择器(例如'doc.css('ending')'或'doc.at_css('conclusion')'。 – orde

+0

Thanks @orde,very nice – Ursus