不用保存xml文件

时间:2010-05-09 04:48:07

标签: c# xml

如何使用xml文件,在更新它时,保存注释行后仍然会出现。

以下是我保存文件的代码段:

    public static void WriteSettings(Settings settings, string path)
    {
         XmlSerializer serializer = new XmlSerializer(typeof(Settings));
         TextWriter writer = new StreamWriter(path);
         serializer.Serialize(writer, settings);
         writer.Close();            
    }

2 个答案:

答案 0 :(得分:3)

我不确定我理解你的要求。我想说不要使用XmlSerializer,因为它是为XML格式创建对象的序列化版本而设计的。对象中没有XML注释,因此为该对象生成的XML不会生成任何注释。如果您想处理纯XML,只需使用一个简单的XML解析类,而不是用于将类序列化为XML文档的类:

string myXml =
   "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + Environment.NewLine +
   "<!-- This is a comment -->" + Environment.NewLine +
   "<Root><Data>Test</Data></Root>";

System.Xml.XmlDocument xml = new System.Xml.XmlDocument();
xml.PreserveWhitespace = true;
xml.LoadXml(myXml);
var newElem = xml.CreateElement("Data");
newElem.InnerText = "Test 2";
xml.SelectSingleNode("/Root").AppendChild(newElem);
System.Xml.XmlWriterSettings xws = new System.Xml.XmlWriterSettings();
xws.Indent = true;
using (System.Xml.XmlWriter xw = System.Xml.XmlWriter.Create(Console.Out, xws))
{
   xml.WriteTo(xw);
}

答案 1 :(得分:0)

此代码将完全覆盖xml文件。为了在现有文件中保留注释,您必须先阅读它,然后更新并保存。