自定义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
它为您提供了两种方法ReadXml
和WriteXml
,您必须实现读取对象并将其写回。 然后使用标准的.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; }