我有一個類,我需要做一些自定義的XML輸出,因此我實現了IXmlSerializable接口。但是,我想用默認序列化輸出一些字段,但我想更改xml標記名稱。當我調用serializer.Serialize時,我得到了XML中的默認標籤名稱。我可以改變這些嗎?自定義序列化使用XmlSerializer
這裏是我的代碼:
public class myClass: IXmlSerializable
{
//Some fields here that I do the custom serializing on
...
// These fields I want the default serialization on except for tag names
public string[] BatchId { get; set; }
...
... ReadXml and GetSchema methods are here ...
public void WriteXml(XmlWriter writer)
{
XmlSerializer serializer = new XmlSerializer(typeof(string[]));
serializer.Serialize(writer, BatchId);
... same for the other fields ...
// This method does my custom xml stuff
writeCustomXml(writer);
}
// My custom xml method is here and works fine
...
}
這裏是我的XML輸出:
<MyClass>
<ArrayOfString>
<string>2643-15-17</string>
<string>2642-15-17</string>
...
</ArrayOfString>
... My custom Xml that is correct ..
</MyClass>
我想直到結束是:
<MyClass>
<BatchId>
<id>2643-15-17</id>
<id>2642-15-17</id>
...
</BatchId>
... My custom Xml that is correct ..
</MyClass>
多久你序列化/反序列化?在應用生命週期內或僅在啓動/關閉期間執行100次。如果前者我有一個更靈活的實現。 – 2009-12-30 20:30:59
真的只有序列化一次。這個應用程序是一個簡單的工具,它從專有數據庫格式中提取數據並保存到xml。所以我將數據拉入對象模型,然後立即序列化。大部分數據很簡單,所以我不需要實現IXmlSerializable ...但是這個特定的數據有點痛苦。 – KrisTrip 2009-12-30 20:34:50
看看這裏,代碼是MIT http://code.google.com/p/videobrowser/source/browse/MediaBrowser/Library/Persistance/XmlSettings.cs還有一個單元測試,你可能不得不擴展一下,但所有的架構都在那裏。加上你的場景,它會比XmlSerializer更好地執行 – 2009-12-30 20:41:23