我正在使用 C# 对象来序列化/反序列化 XML。
我想在序列化时向 XML 文件添加注释,此注释将是<!-- comment -->
标准 xml 标记之后的基本注释<?xml version="1.0" encoding="UTF-8"?>
此注释不需要反序列化,它是一个基本注释,用于指示创建 xml 文件的产品和版本。
我正在使用 C# 对象来序列化/反序列化 XML。
我想在序列化时向 XML 文件添加注释,此注释将是<!-- comment -->
标准 xml 标记之后的基本注释<?xml version="1.0" encoding="UTF-8"?>
此注释不需要反序列化,它是一个基本注释,用于指示创建 xml 文件的产品和版本。
您可以使用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();
}
将其序列化为 XML,将该 XML 加载为XDocument
(或您想要的任何 API),插入注释,再次保存。简单,并且应该与您想要使用的任何 API 一起使用。您可以使用 aMemoryStream
作为临时存储在内存中完成所有操作。
可能有一种直接序列化到新的XDocument
/的方法XmlDocument
,但我不知道。
我相信你可以在你的对象上实现 IXMLSeriablizable。如果我没记错的话,在序列化/反序列化时会自动调用来自该接口的 ReadXML(XmlReader reader) 和 WriteXML(XmlWriter writer)(CreateSchema 或任何第三种方法,不需要实现)。
实现它的警告是您现在可能需要在所有相关的嵌套对象上实现它。(即,如果您有一个包含 User 对象的 Department 对象并且您想要对 Departments 进行评论,您将需要在 Department 和 User 上实现 IXmlSeriablizable)。此外,由于您直接管理序列化,因此如果向类添加新属性,您将需要手动修改 IXmlSerializable 方法。
我通常在我的对象上实现 IXmlSerializable,因为我喜欢直接控制序列化的内容和方式。