我正在使用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