自定义xml序列化

我需要帮助,我有一些数据来自xml,我想制作一个对象,用它做一些事情,序列化它并发送它…但它必须是某种自定义序列化。

xml喜欢:

   a   oof  12    b   meow    

需要表现为:

 abstract class Animal :XmlMagic { public string Name{get;set;} public string Sound{get;set;} public void SomeMagicalXMLSerializationMethod() {} public void SomeMagicalXMLDeSerializationMethod() {} } class Dog: Animal, XmlMagic { public int SomeOtherProp{get;set;} public void SomeMagicalXMLSerializationMethod() {} public void SomeMagicalXMLDeSerializationMethod() {} } 

您所使用的XmlMagic称为IXmlSerializable接口: http : //msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx

它为您提供了两种方法ReadXmlWriteXml ,您必须实现读取对象并将其写回。 然后使用标准的.Net XmlSerializer来序列化/反序列化对象。

如果您需要更多帮助,请告诉我。

但是也有XML序列化属性

 [XmlAttribute] [XmlArrayElement] [XmlRoot] 

等等,您甚至可以使用这些属性来控制序列化并实现您想要的function,而无需编写复杂的序列化逻辑。

您可能想要查看WCF REST入门套件; 因为它包括一个名为“将XML粘贴为类型”的视觉工作室添加

基本上,您复制原始XML,然后选择该选项; 它将根据该XML为您生成一个类。 然后你可以做一些简单的事情:

 var xmlResponse = new XmlDocument(); xmlResponse.LoadXml(response); var deserializedResponse = ConvertNode(xmlresponse); public static T ConvertNode(XmlNode node) where T : class { var stm = new MemoryStream(); var stw = new StreamWriter(stm); stw.Write(node.OuterXml); stw.Flush(); stm.Position = 0; var ser = new XmlSerializer(typeof(T)); var result = (ser.Deserialize(stm) as T); return result; }