rexml page.root.has_elements?说没有元素

时间:2012-05-30 09:23:23

标签: ruby rexml

我尝试阅读以下文件:                            

使用以下代码:

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

有人可以通过指出这里出了什么问题来帮助我吗?

1 个答案:

答案 0 :(得分:1)

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

page.root.has_elements?如果根元素包含子元素,则返回 true 。在您的情况下,当根元素找到子元素时,您正在打印“无元素”。它可能应该是“有元素”,因为它有误导性。

其次,page.root.name的输出是指XML文档的根元素的名称,因此在您的情况下打印出“html”。但是,page.root.text返回第一个文本节点(不是子元素的文本),这可能是一个空格,因此似乎不显示任何内容。