我正在使用C#对象来序列化/反序列化XML。C#XML在xml标记后插入注释到XML
我想添加评论,而序列化的XML文件,此评论将是标准的XML标签<?xml version="1.0" encoding="UTF-8"?>
此评论并不需要反序列化后基本<!-- comment -->
,它的一个基本的意见,指示创建xml文件的产品和版本。
我正在使用C#对象来序列化/反序列化XML。C#XML在xml标记后插入注释到XML
我想添加评论,而序列化的XML文件,此评论将是标准的XML标签<?xml version="1.0" encoding="UTF-8"?>
此评论并不需要反序列化后基本<!-- comment -->
,它的一个基本的意见,指示创建xml文件的产品和版本。
将其序列化为XML,将该XML作为XDocument
(或任何您需要的API)加载,插入注释并再次保存。简单,应该使用任何你想使用的API。您可以在内存中使用MemoryStream
作为临时存储。
还有可能是一种直接序列化成新的XDocument
/XmlDocument
,但我不知道它。
@Downvoter:小心给出投票理由? – 2010-06-01 16:45:49
可以使用CreateWriter直接序列化到一个新的XDocument:
XDocument document = new XDocument();
document.Add(new XComment("Product XY Version 1.0.0.0"));
using (XmlWriter writer = document.CreateWriter())
{
serializer.WriteObject(writer, graph);
}
document.Save(Console.Out);
或者,你可以序列化到任何其他XmlWriter还有:
using (XmlWriter writer = XmlWriter.Create(Console.Out))
{
writer.WriteStartDocument();
writer.WriteComment("Product XY Version 1.0.0.0");
serializer.WriteObject(writer, graph);
writer.WriteEndDocument();
}
+ 1000000知道乔恩Skeet没有的东西:P(这是一个很好的答案) – 2010-01-18 14:02:29
我相信你可以在你的对象实现IXMLSeriablizable 。如果我没有记错的话,在序列化/反序列化(CreateSchema,或任何第三种方法不需要实现)时,将自动调用该接口中的ReadXML(XmlReader reader)和WriteXML(XmlWriter writer)。
实施它的警告是,你现在可能需要在所有相关的嵌套对象上实现它。 (即,如果您有一个包含User对象的Department对象,并且您希望对Departments进行评论,则需要在Department和User上实现IXmlSeriablizable)。此外,由于您直接管理序列化,因此如果向类添加新属性,则需要手动修改IXmlSerializable方法。
我通常在我的对象上实现IXmlSerializable,因为我喜欢直接控制序列化和如何操作。
和你的问题是?如何在序列化的XML中添加此评论? – Natrium 2010-01-18 13:42:35
我将对象序列化为XML,注释不在对象的表示之内,仅仅是xml中的注释。 – 2010-01-18 13:43:59
我可以用XMLtag + Comment替换XMLtag,但这看起来不是最优雅的解决方案。 – 2010-01-18 13:48:11