0
require 'xml/libxml'
require 'libxml/document'
$release_date
doc=LibXML::XML::Parser.io(file.xml).parse 
doc.root.each_element('//ABCD/xyz/') do |elem|
    elem.each_element do |node|             
        node.each_element do |child|
           if child.content=="ABCD"
               $release_date=node['date']
           else 
               if node['type']=="Original"
                   $release_date=node['date']
               end
           end  
        end    
    end 
end
puts "Release date : #{$release_date}"

这是我为根据我的要求从 XML 文件中提取特定日期而编写的代码。我使用了 lib xml 库,但出现以下错误:

`parse': undefined method `read' for "file.xml":String (NoMethodError)
4

1 回答 1

3

根据libxml 文档,解析文件:

LibXML::XML::Parser.file('file.xml').parse

或者

LibXML::Parser.io(File.open('file.xml')).parse

另外,each_element 不带任何参数。如果你想做一个 XPath 查询,看看find

require 'xml'
doc = LibXML::XML::Parser.file("/tmp/test.xml").parse 
nodes = doc.find('//test')
nodes.each do |n|
  puts n.content
end
于 2012-09-24T08:18:13.990 回答