我尝试阅读以下文件:
使用以下代码:
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
有人可以通过指出这里出了什么问题来帮助我吗?
答案 0 :(得分:1)
print "no elements\n" if page.root.has_elements?
page.root.has_elements?如果根元素包含子元素,则返回 true 。在您的情况下,当根元素找到子元素时,您正在打印“无元素”。它可能应该是“有元素”,因为它有误导性。
其次,page.root.name
的输出是指XML文档的根元素的名称,因此在您的情况下打印出“html”。但是,page.root.text
返回第一个文本节点(不是子元素的文本),这可能是一个空格,因此似乎不显示任何内容。