此代码段<!--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();
答案 0 :(得分:4)
嗯,这很明显:
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节点(包括注释)复制到新文件中。
答案 1 :(得分:1)
<!-- -->
表示XML中的注释。您正在将对象写入XML - 对象在编译期间编译时没有注释。
也就是说,Settings
对象(可能是.config XML的反序列化形式)在反序列化后不会在内存中保留注释,因此它们也不会被序列化。您无法对框架的这种行为做任何事情,因为没有内置机制来使用XmlSerializer
反序列化注释。