如何使用Nokogiri的构建器向XML添加<!-- blahblah -->
评论?
我希望有类似的东西:
<root>
<!--blahblah-->
<child/>
</root>
我尝试这样的事情:
Nokogiri::XML::Builder.new do |xml|
xml.root {
xml.comment('blahblah')
xml.child
}
end
但这给了我:
<root>
<comment>blahblah</comment>
<child/>
</root>
答案 0 :(得分:4)
您可以使用this bug documented future feature not present in the current release解决Builder#<<
,如下所示:
require 'nokogiri'
xml = Nokogiri::XML::Builder.new do |xml|
xml.root {
xml << '<!--blahblah-->'
xml.child
}
end
puts xml.doc.root.to_xml
#=> <root>
#=> <!--blahblah-->
#=> <child/>
#=> </root>
或者,您可以在自己的未来方法版本中进行monkeypatch:
class Nokogiri::XML::Builder
def comment(string)
insert Nokogiri::XML::Comment.new( doc, string.to_s )
end
end
答案 1 :(得分:1)
由于V1.6.8支持comment
- 选项,因此您无需使用<<
。
如果您需要评论标记,可以使用comment_
(最后使用下划线)。
示例:
builder = Nokogiri::XML::Builder.new do |xml|
xml.root {
xml.comment 'My comment'
xml.comment_ 'My comment-tag'
}
end
puts builder.to_xml
结果:
<?xml version="1.0"?>
<root>
<!--My comment-->
<comment>My comment-tag</comment>
</root>
答案 2 :(得分:0)
顺便说一下,它可能很明显,但是现在xml.comment创建了一个XML注释,如果你必须创建一个元素<comment>
,你必须使用
xml << "<comment>#{comment}</comment>"
它刚好发生在我身上。感谢暗示&lt;&lt;方法