Tôi đang sử dụng thư viện REXML.Phân tích cú pháp tài liệu XML trong Ruby
<foo>
<baa>value<baa>
<foo>
Tôi muốn nhận giá trị thuộc về trừu kêu.
Làm cách nào để mã hóa?
Tôi đang sử dụng thư viện REXML.Phân tích cú pháp tài liệu XML trong Ruby
<foo>
<baa>value<baa>
<foo>
Tôi muốn nhận giá trị thuộc về trừu kêu.
Làm cách nào để mã hóa?
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.
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.
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>
tôi giả XML của bạn được coi là " giá trị ", ví dụ: với kết thúc thẻ. –