处理 XML 文件会删除注释

lit*_*tle 2 .net c# xml

这个片段<!--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();    
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 5

嗯,这很明显:

  • 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();
Run Code Online (Sandbox Code Playgroud)

这会将所有 xml 节点(包括注释)复制到新文件中。