2009-07-01 17 views
7

में मैं REXML लाइब्रेरी का उपयोग कर रहा हूँ।पार्स XML दस्तावेज़ रूबी

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

मैं मूल्य प्राप्त करना चाहता हूं बा।

यह कैसे कोड करने के लिए?

+0

मुझे लगता है अपने एक्सएमएल टैग समाप्त होने के साथ " मूल्य", यानी माना जाता है। –

उत्तर

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

ऋषव का समाधान मेरे लिए फेंकता है।

 
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> 
संबंधित मुद्दे