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 に答える