簡體   English   中英

從XML節點刪除空格

[英]Remove Whitespace From XML Nodes

如何在C#中指定的特定節點的每個實例上刪除空格? 例如,假設我有以下XML文檔:

<XML_Doc>

  <Record_1>
     <Name>Bob</Name>
     <ID_Number>12345</ID_Number>
     <Sample>
     </Sample>
  </Record_1>

  <Record_2>
     <Name>John</Name>
     <ID_Number>54321</ID_Number>
     <Sample>
     </Sample>
  </Record_2>

</XML_Doc>

我想要的是獲取<Sample>標記的每個實例並更改格式,如下所示:

<XML_Doc>

  <Record_1>
     <Name>Bob</Name>
     <ID_Number>12345</ID_Number>
     <Sample></Sample>
  </Record_1>

  <Record_2>
     <Name>John</Name>
     <ID_Number>54321</ID_Number>
     <Sample></Sample>
  </Record_2>

</XML_Doc>

編輯:

使用XML文件的另一個應用程序不是我編寫的,因此我無法修改XML文檔本身的結構。 我正在編寫一個實用程序,該實用程序可以解析XML文件並替換我指定的節點的每個實例。 <Sample></Sample>標記位於同一行的<Sample></Sample>是文檔最初的格式設置以及我需要它如何使其他應用程序能夠正確讀取它。

如果您對保留空白感興趣(例如,制表符,回車符和其他格式),則可以使用CDATA (未分析的字符數據)。

<![CDATA[
]]>

但是,如果您只是想出於審美目的對XML文檔進行某種格式的格式化,建議您別管它。

要將CDATA節寫入XML文檔,請使用以下代碼:

XmlNode itemDescription = doc.CreateElement("description");
XmlCDataSection cdata = doc.CreateCDataSection("<P>hello world</P>");
itemDescription.AppendChild(cdata);
item.AppendChild(itemDescription);

這產生

<description><![CDATA[<P>hello world</P>]]></description>

我想你要設定

xml.Settings.NewLineHandling = NewLineHandling.Entitize;

我建議使用xslt轉換。 通過這種方式,您可以控制剝離或保留空白空間。

MSDN上有一篇文章解決了此問題,請參閱: 使用DOM控制空白

根據您的評論,我認為您也許可以使用XmlWriterSettings.NewLineHandling屬性來更改文本節點處理回車的方式。 您必須進行試驗。 我懷疑接收應用程序存在某些行解析問題,並且正在尋找\\ r \\ n之類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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