0

次のファイルを読み込もうとしました。

以下のコードで:

require 'rexml/document'
include REXML

str = File.read("../pages/prac.xml").gsub(/\s+/, " ")

page = REXML::Document.new(str)
print "no elements\n" if page.root.has_elements?
print "Text: #{page.root.text}\n"
print "Name: #{page.root.name}\n"

page.root.each_element do |parent_tag|
    parent_tag.each_element do |tag|
        if tag.has_elements?
            tag.each_element do |data|
                p data
            end
        else
            puts "#{tag.name}: #{tag.text}"
        end
    end
end

私が見ている出力は次のとおりです。

no elements
Text:  
Name: html

誰かがここで何が悪いのかを指摘することで私を助けることができますか?

4

1 に答える 1

1
print "no elements\n" if page.root.has_elements?

page.root.has_elements? ルート要素に子要素がある場合はtrueを返します。あなたの場合、ルート要素が子要素を見つけたときに「要素なし」を出力しています。書かれていると誤解を招くので、代わりに「要素がある」と読むべきでしょう。

次に、からの出力page.root.nameは XML ドキュメントのルート要素の名前を参照するため、この場合は「html」と出力されます。ただし、page.root.text最初のテキスト ノード (子要素のテキストではない) を返します。これはおそらく空白であり、何も表示されないように見えます。

于 2012-05-30T21:45:15.460 に答える