我使用REXML库。
<foo> <baa>value</baa> </foo>
我想得到属于<baa>的值。我该怎么做?
<baa>
toiithl61#
试试这个
require 'rexml/document' doc = REXML::Document.new File.new('mydoc.xml') doc.elements('*/foo/baa') { |element| puts element.get_text }
我自己更喜欢Nokogiri和Hpricot宝石。如果你想的话可以试试。
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::元素。
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>
3条答案
按热度按时间toiithl61#
试试这个
我自己更喜欢Nokogiri和Hpricot宝石。如果你想的话可以试试。
wfveoks02#
如果你想收集值,你可以使用to_a.map或injection来代替。请参见REXML::元素。
zengzsys3#
里沙夫的解决方案给我带来了麻烦。
以下是一些替代方法: