5

アクセスしようとしている非常に単純なxmlファイルがあります。

<article>
    <text>hello world</text>
</article>

私はこれまでこれをやっています:

file = File.open("#{Rails.root}/public/files/#{file_id}.xml", "r")
xml = file.read

doc = REXML::Document.new(xml)

Rails コンソールでこのコードを実行すると、次のように表示されます。

1.9.3-p194 :033 > doc.inspect
 => "<UNDEFINED> ... </>" 

なぜファイルが正しくロードされないのか理解できないようです。テキスト xml 要素にもアクセスできません。

4

1 に答える 1

11

正しくロードされていますが、ドキュメントにはルート ノードがありません。

require "rexml/document"
doc = REXML::Document.new DATA.read

doc.root_node # => <UNDEFINED> ... </>
doc.inspect   # => "<UNDEFINED> ... </>"
doc.to_s      # => "<article>\n    <text>hello world</text>\n</article>\n"

doc.get_elements('//article') # => [<article> ... </>]
doc.get_elements('//text')    # => [<text> ... </>]

__END__
<article>
    <text>hello world</text>
</article>

ところで、Ruby コミュニティはほぼ例外なくNokogiriによる xml 解析を支持していると思います。

于 2012-10-15T02:45:21.397 に答える