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 回答