2009-07-01 54 views
7

我正在使用REXML庫。解析Ruby中的XML文檔

<foo> 
    <baa>value<baa> 
<foo> 

我想要得到的價值屬於咩。

如何編碼?

+0

我假設你的XML應該是 「價值」,即與結束標記。 – 2009-07-01 06:11:58

回答

9

試試這個

 

require 'rexml/document' 

doc = REXML::Document.new File.new('mydoc.xml') 

doc.elements('*/foo/baa') { |element| puts element.get_text } 

我更喜歡引入nokogiri和寶石角度來說,Hpricot自己。你可以嘗試他們,如果你想。

0
require 'rexml/document' 

xml = <<-EOS 
<foo> 
    <baa>value</baa> 
</foo> 
EOS 

doc = REXML::Document.new(xml) 
doc.root.elements.each("baa") { |element| p element.text } 

如果你想收集值,你可以使用to_a.map或注入。 請參閱REXML::ELements

0

Rishav的解決方案給我。

 
11:50:18 Temp$ ruby rx.rb 
rx.rb:5:in `elements': wrong number of arguments (1 for 0) (ArgumentError) 
     from rx.rb:5 
11:50:25 Temp$ 

這裏有一些替代方法:

 
require 'rexml/document' 

doc = REXML::Document.new DATA 

doc.elements.each('//foo/baa') { |element| puts element.get_text } 
baas = REXML::XPath.each(doc, '//foo/baa/text()') {|txt| p txt} 
p baas 

__END__ 
<foo> 
    <baa>value</baa> 
</foo>