2009-07-01 38 views

Trả lời

9

thử này

 

require 'rexml/document' 

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

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

tôi thích Nokogiri và Hpricot đá quý bản thân mình. Bạn có thể thử chúng nếu bạn muốn.

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 } 

Nếu bạn muốn thu thập các giá trị, bạn có thể sử dụng to_a.map hoặc inject thay thế. Xem REXML::ELements.

0

Giải pháp của Rishav mang lại cho tôi.

 
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$ 

Dưới đây là một số cách tiếp cận khác:

 
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> 
Các vấn đề liên quan