【发布时间】:2011-08-18 04:38:35
【问题描述】:
我正在使用内置的 XML 反序列化(不是因为它是我的选择,而是遗留代码)将 xml 反序列化为强类型对象。
注意:我无法控制 xml,它是一个外部 api
问题是 xml 节点已扩展为包含同名的子节点,并且它破坏了序列化。
例如xml如下:
<people>
<person>
<id>1234</id>
<person>
<name>This is my name</name>
<person>
</person>
</people>
以下对象
[XmlType("person")]
public class Person {
[XmlElement("id")]
public int Id { get; set; }
[XmlElement("person")]
public PersonTitle Title{ get; set; }
}
[XmlType("person")]
pulic class PersonTitle
{
[XmlElement("name")]
public string Name { get; set; }
}
这在调用 (T)xmlserializer.Deserialize(stream) 时会引发错误,因为即使 xml 是有效的,名称也会重复。就我个人而言,我不会费心在对象中复制 xml 布局,只是为了在手动反序列化更容易维护时自动反序列化它(尤其是当它一开始就从未被 .net 序列化时)。
但是,我想知道是否有办法解决这个问题,即使这意味着将子对象展平。
我知道这不起作用,但例如:
[XmlType("person")]
public class Person {
[XmlElement("id")]
public int Id { get; set; }
[XmlElement("person/name")]
public string Title{ get; set; }
}
感谢任何帮助。
【问题讨论】:
标签: c# asp.net xml xml-serialization