簡體   English   中英

處理XML文件會刪除注釋

[英]Processing an XML file removes comments

此代碼段<!--Please don't delete this-->是我的xml文件的一部分。 運行此方法后,生成的xml文件不再包含此代碼段<!--Please don't delete this--> 為什么是這樣?

這是我的方法:

         XmlSerializer serializer = new XmlSerializer(typeof(Settings));
         TextWriter writer = new StreamWriter(path);
         serializer.Serialize(writer, settings);
         writer.Close();    

好吧,這很明顯:

  • XmlSerializer將解析XML文件並從中提取Settings所有實例-您的評論將不屬於任何這些對象
  • 當您再次寫回這些內容時,只會再次寫出Settings對象的內容

您的評論將不勝枚舉-但是,只要您使用XmlSerializer方法,就看不到任何可以“保存”該評論的方法。

您需要做的是改用XmlReader / XmlWriter:

XmlReader reader = XmlReader.Create("yourfile.xml");
XmlWriter writer = XmlWriter.Create("your-new-file.xml");

while (reader.Read())
{
   writer.WriteNode(reader, true);
}

writer.Close();
reader.Close();

這會將所有xml節點(包括注釋)復制到新文件。

<!-- -->表示XML注釋。 您正在將對象寫成XML-對象沒有注釋,因為它們在編譯期間會被注釋掉。

也就是說, Settings對象(可能是您的.config XML的反序列化形式)在反序列化之后不會在內存中保存注釋,因此它們也不會被序列化。 對於框架的這種行為,您無能為力,因為沒有內置的機制可以使用XmlSerializer對注釋進行反序列化。

暫無
暫無

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

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