おかげで、私はこのコードを使用して任意のこのような問題を持っていない:
require 'rexml/document'
doc = REXML::Document.new <<ENDXML
<?xml version="1.0" standalone="yes"?>
<t>dede</t>
ENDXML
doc.each_element('//t'){ |e| puts e }
#=> <t>dede</t>
使用している、そしてどのようなあなたのコードが実際のように見えるんルビーのバージョンは何?
編集:あなたは、ストリームパーサを使用している新しい情報をオフに基づいて、ここにも私はRubyの1.8.7使用のために動作するコードの別の部分があります:
class Listener
def method_missing(name, *args); puts "I don't support '#{name}'"; end
def tag_start(name, attrs); puts "<#{name} #{attrs.inspect}>"; end
def text(str); p str; end
def tag_end(name); puts "</#{name}>"; end
end
require 'stringio'
xml = StringIO.new <<ENDXML
<?xml version="1.0" standalone="yes"?>
<t>dede</t>
ENDXML
require 'rexml/document'
doc = REXML::Document.parse_stream(xml, Listener.new)
#=> "\t"
#=> I don't support 'xmldecl'
#=> "\n\t"
#=> <t {}>
#=> "dede"
#=> </t>
#=> "\n"
ruby 1.8.7を使用すると、コードはREXML :: Document.parse_stream(File.open(file_name)、listener) –
です。上記のコードは1.8.7でも動作します。さらに調べるには、まず 'p IO.read(file_name)'の結果を貼り付けます。 – Phrogz