Ruby 节点标记为带有nokogiri的文本

Ruby 节点标记为带有nokogiri的文本,ruby,nokogiri,Ruby,Nokogiri,我有以下XML: <DaysOfWeek> <MondayToSunday/> </DaysOfWeek> 我使用的是Nokogiri,如果我调用node.name它会返回“text”。如何获得标记的实际名称,如“MondayToSunday”?您的元素已经存在,并且标记名为MondayToSunday。问题是,当Nokogiri解析文档时,其中也包含空行,在您的情况下,您需要将其过滤掉 下面是一个例子: # ex.rb require 'no

我有以下XML:

<DaysOfWeek>
    <MondayToSunday/>
</DaysOfWeek>


我使用的是Nokogiri,如果我调用
node.name
它会返回“text”。如何获得标记的实际名称,如“MondayToSunday”?

您的元素已经存在,并且标记名为
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

如果有两个名为
的文本
,其中有新行,并且在标记
周一到周日
之间

我们无法判断您是如何使用Nokogiri的,因此这可能是一个简单的错误。下面是我要做的:

require 'nokogiri'

xml =<<EOT
<DaysOfWeek>
    <MondayToSunday/>
</DaysOfWeek>
EOT

doc = Nokogiri::XML.parse(xml)
doc.at('DaysOfWeek').name # => "DaysOfWeek"
doc.at('MondayToSunday').name # => "MondayToSunday"
需要“nokogiri”
xml=“周一到周日”
at
是一种快速查找与特定访问者匹配的第一个节点的方法,在本例中,该节点名为“
DaysOfWeek
”或“
MondayToSunday
”。Nokogiri充满了隔离特定标签的方法,这是它的优势;找到它,获取有关它的信息,然后移动到下一个并重复


这都在常规文档和中。

嘿,谢谢,自从问了这个问题后,我得出了相同的结论,我这样做是为了解决
day\u of_non\u操作。name if day\u of_non\u操作。type==Nokogiri::XML::Reader::type\u元素
所以我只得到了作为元素的行,而不是文本。谢谢你的回答。关于堆栈溢出,展示你自己解决问题的尝试是非常重要的。在这种情况下,如果你能说明你在哪里搜索,以及为什么搜索没有给你提供答案,那就真的很有帮助了。请参阅“”和链接页面以及“”。事实上,您的问题相当广泛,因为我们无法告诉您是如何解决的。除非您已经知道存在带有标记“MondayToSunday”的节点,否则这是行不通的。代码的要点是展示如何正确访问节点。节点是否存在超出了示例的目的。而且,因为OP没有告诉我们Nokogiri是如何被使用的,所以试图涵盖每一种可能的情况将是一个教程,这就是为什么这个问题被关闭为网站的非主题。
require 'nokogiri'

xml =<<EOT
<DaysOfWeek>
    <MondayToSunday/>
</DaysOfWeek>
EOT

doc = Nokogiri::XML.parse(xml)
doc.at('DaysOfWeek').name # => "DaysOfWeek"
doc.at('MondayToSunday').name # => "MondayToSunday"