用Ruby解析XML文档

jtjikinw  于 2023-06-22  发布在  Ruby
关注(0)|答案(3)|浏览(143)

我使用REXML库。

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

我想得到属于<baa>的值。
我该怎么做?

toiithl6

toiithl61#

试试这个

require 'rexml/document'

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

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

我自己更喜欢Nokogiri和Hpricot宝石。如果你想的话可以试试。

wfveoks0

wfveoks02#

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或injection来代替。请参见REXML::元素。

zengzsys

zengzsys3#

里沙夫的解决方案给我带来了麻烦。

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>

相关问题