[英]Comment out a node in Nokogiri XML?
目前,我正在使用以下方法从文档中删除窗帘节点:
doc.search('//xpathExpression').each do |node|
node.remove
end
但是,我确实需要注释掉节点而不是删除它们。 有没有一种简单的方法可以更改当前节点的节点类型/注释?
为了在到期时记入贷方,这是原始用户在上面的注释中建议的方法。
执行以下操作以基于xpath注释出给定的一个或多个节点:
.xpath
方法查找目标节点。 例如,给定:
#!/usr/bin/env ruby
require "nokogiri"
xml = %{
<top>
<child num="1"/>
<child num="2"/>
</top>
}
doc = Nokogiri::XML(xml)
此代码将基于num="2"
属性注释掉第二个<child>
。
doc.xpath("//top/child[@num='2']").each do |node|
node.add_previous_sibling( Nokogiri::XML::Comment.new(doc, " #{node.to_s} ") )
node.remove
end
完成该过程后, doc.to_xml
将为:
<?xml version="1.0"?>
<top>
<child num="1"/>
<!-- <child num="2"/> -->
</top>
附加信息:
Nokogiri产生的注释在<!--
和-->
标记之间以及添加的任何内容之间没有空格。 上面的示例添加了前导和尾随空间。 如果这无关紧要,则可以使用以下命令输出节点
Nokogiri::XML::Comment.new(doc, node.to_s)
在注释中进行自动漂亮的打印似乎并不容易。 尽管可能有解决的办法,但如果您担心美学问题,请准备好花些时间将其弄乱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.