我目前正在使用Ruby与Nokogiri和Nori。我使用以下方法读取XML文档:
xml = Nokogiri::XML(File.open('file.xml')) { |config| config.strict }
XML文档有缩进以使其更具可读性,但是Nokogiri使用这些缩进并将它们转换为Nokogiri::XML::Text对象,这是我不想要的。
例如,考虑一下这个简单的XML文档:
<root>
<level1>value</level1>
</root>
Nokogiri从中产生了以下内容:
#<Nokogiri::XML::Document:0x12a7564 name="document" children=[#<Nokogiri::XML::Element:0x12a6fb0 name="root" children=[#<Nokogiri::XML::Text:0x12a6ca4 "\n ">, #<Nokogiri::XML::Element:0x12a6b14 name="level1" children=[#<Nokogiri::XML::Text:0x12a640c "value">]>, #<Nokogiri::XML::Text:0x12a5e80 "\n">]>]>
相反,我想得到的是:
#<Nokogiri::XML::Document:0x12a7564 name="document" children=[#<Nokogiri::XML::Element:0x12a6fb0 name="root" children=[#<Nokogiri::XML::Element:0x12a6b14 name="level1" children=[#<Nokogiri::XML::Text:0x12a640c "value">]>]>]>
注意,捕获缩进(例如#<Nokogiri::XML::Text:0x12a6ca4 "\n ">
)的Nokogiri::XML::Text条目不在我手工编辑的示例中。
当试图迭代字段和其他对象(例如,检查属性等)时,这些不需要的条目稍后会导致问题。
是否有一种方法可以配置Nokogiri
以避免添加这些不必要的基于缩进的条目?
发布于 2016-02-25 15:42:15
我希望这样可以解决您的问题:您可以简单地使用noblanks
选项:
require 'nokogiri'
xml = Nokogiri::XML(File.open('file.xml')) { |config| config.strict }
xml2 = Nokogiri::XML(File.open('file.xml')) { |config| config.strict.noblanks }
xml
会给你:
#<Nokogiri::XML::Document:0x3ff585c84550 name="document" children=[#<Nokogiri::XML::Element:0x3ff585c84050 name="root" children=[#<Nokogiri::XML::Text:0x3ff586427ca8 "\n ">, #<Nokogiri::XML::Element:0x3ff586427aa0 name="level1" children=[#<Nokogiri::XML::Text:0x3ff5864275b4 "value">]>, #<Nokogiri::XML::Text:0x3ff58642708c "\n">]>]>
xml2
将是:
#<Nokogiri::XML::Document:0x3ff58640fdb0 name="document" children=[#<Nokogiri::XML::Element:0x3ff58640f964 name="root" children=[#<Nokogiri::XML::Element:0x3ff58640f004 name="level1" children=[#<Nokogiri::XML::Text:0x3ff58640eb2c "value">]>]>]>
https://stackoverflow.com/questions/35640179
复制相似问题