我有以下XML:
<DaysOfWeek>
<MondayToSunday/>
</DaysOfWeek>
我正在使用Nokogiri,如果我呼叫node.name
,它将返回“文本”。如何获取标签的实际名称,例如“ MondayToSunday”?
答案 0 :(得分:2)
您的元素已经存在,标签名称为MondayToSunday
。问题是,当Nokogiri解析文档时,它还包含空白行,那么您需要将其过滤掉。
这是一个例子:
# ex.rb
require 'nokogiri'
xml = <<-XML
<DaysOfWeek>
<MondayToSunday/>
</DaysOfWeek>
XML
days_of_week = Nokogiri::XML(xml).children
days_of_week.children.each do |el|
puts "Name: #{el.name}"
p el.text
end
然后,当我们运行此示例时,我们可以看到我们实际上为DaysOfWeek
标签有三个孩子:
Name: text
"\n "
Name: MondayToSunday
""
Name: text
"\n"
其中有两个名为text
,其中有新行,并且在标签MondayToSunday
之间。
答案 1 :(得分:-1)
我们无法告知您如何使用Nokogiri,因此做错这可能是一个简单的错误。这就是我要做的:
require 'nokogiri'
xml =<<EOT
<DaysOfWeek>
<MondayToSunday/>
</DaysOfWeek>
EOT
doc = Nokogiri::XML.parse(xml)
doc.at('DaysOfWeek').name # => "DaysOfWeek"
doc.at('MondayToSunday').name # => "MondayToSunday"
at
是查找与特定访问者匹配的第一个节点的快速方法,在这种情况下,该节点名为“ DaysOfWeek
”或“ MondayToSunday
”。 Nokogiri充满了各种方法来隔离特定标签,这就是它的优势。找到它,获取有关它的信息,然后移至下一个并重复。
这一切都在常规文档和cheat sheet中。