簡體   English   中英

C#XML在xml標記之后將注釋插入XML

[英]C# XML Insert comment into XML after xml tag

我正在使用C#對象來序列化/反序列化XML。

我希望在序列化時為XML文件添加注釋,這個注釋將是標准xml標簽<?xml version="1.0" encoding="UTF-8"?>之后的基本<!-- comment --> <?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。 您可以使用MemoryStream作為臨時存儲在內存中完成所有操作。

可能有一種方法可以直接序列化到新的XDocument / XmlDocument ,但我不知道它。

我相信你可以在你的對象上實現IXMLSeriablizable。 如果我沒記錯的話,序列化/反序列化時會自動調用該接口的ReadXML(XmlReader reader)和WriteXML(XmlWriter writer)(CreateSchema,或者不需要實現第三種方法)。

實現它的警告是,您現在可能需要在所有相關的嵌套對象上實現它。 (即,如果您有一個包含User對象的Department對象,並且您希望對Departments進行注釋,則需要在Department和User上實現IXmlSeriablizable)。 此外,由於您直接管理序列化,如果向類添加新屬性,則需要手動修改IXmlSerializable方法。

我通常在我的對象上實現IXmlSerializable,因為我喜歡直接控制序列化的內容和方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM