使用c#,我想将各种来源的xml反序列化为常见类型的对象。 XML将不具有相同的架构。例如,在以下xml中,/thingContainer/thing/name
和widget/@title
都会映射到myClass.DisplayName
。
XML1:
<thingContainer>
<thing>
<name>MyName</name>
</thing>
</thingContainer>
XML2:
<widget title="myTitle" />
所以,我不能用[XmlElement]
来标记我的课程,因为根据我的xml的来源,它会有所不同。是否有一些技巧可以用继承或一些助手类来使我能够轻松地从不同的源反序列化xml?是否有一些简单的方法将类字段映射到xpaths?
当然,如果必须的话,我会解析并手动反序列化xml ......但那有什么乐趣?
答案 0 :(得分:1)
立即浮现在脑海中的两个想法:
可能有一些XmlElement hackery可能,但似乎这将是一个混乱的方法。
答案 1 :(得分:0)
我认为你有两种选择:
IXmlSerializable
,并在考虑XML结构的情况下反序列化