1
目前我刪除幕節點形成使用文檔:在Nokogiri XML中註釋掉一個節點?
doc.search('//xpathExpression').each do |node|
node.remove
end
可是,我真的需要註釋掉的節點,而不是將其刪除。有沒有簡單的方法來改變當前節點的節點類型/註釋?
目前我刪除幕節點形成使用文檔:在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)
似乎沒有成爲一個簡單的做一個註釋內自動美化打印。儘管可能有解決辦法,但如果您關注美學,請準備好花一些時間來處理它。
'doc.xpath('// xpathExpression')。each do | node | node.add_previous_sibling(Nokogiri :: XML :: Comment.new(doc,「\ n#{node.to_s} \ n \ t」)) node.remove end' – user3115274
如果評論是答案,則創建與此相關的答案。 SO將有一個超時期限,但是你可以選擇那個作爲答案。不要將代碼放在評論中,因爲它很難閱讀。 –