簡體   English   中英

注釋掉Nokogiri XML中的節點?

[英]Comment out a node in Nokogiri XML?

目前,我正在使用以下方法從文檔中刪除窗簾節點:

doc.search('//xpathExpression').each do |node|
    node.remove
end

但是,我確實需要注釋掉節點而不是刪除它們。 有沒有一種簡單的方法可以更改當前節點的節點類型/注釋?

為了在到期時記入貸方,這是原始用戶在上面的注釋中建議的方法。


執行以下操作以基於xpath注釋出給定的一個或多個節點:

  1. 使用.xpath方法查找目標節點。
  2. 在重新調整的每個節點之前添加一個節點副本,該副本已轉換為注釋對象內的字符串。
  3. 刪除原始節點。

例如,給定:

#!/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM