2009-07-01 11 views
7

Estoy usando la biblioteca REXML.Documento XML de Parse en Ruby

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

Quiero obtener valor pertenece a baa.

¿Cómo codificar?

+0

Asumo el código XML se supone que es " valor", es decir, con poner fin a las etiquetas. –

Respuesta

9

probar esto

 

require 'rexml/document' 

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

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

prefiero Nokogiri y hpricot gemas mí mismo. Puedes probarlos si quieres.

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 } 

Si desea recopilar valores, puede usar to_a.map o inyectar en su lugar. Ver REXML::ELements.

0

La solución de Rishav me sirve.

 
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$ 

He aquí algunos enfoques alternativos:

 
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>