我的班级定义:
[Serializable]
public class MyClass
{
[XmlAttribute(AttributeName = "ID")] //Problem is here. same attr name ID.
public int XXX_ID { get; set; }
[XmlElement(ElementName = "XXX")]
public string XXX_Value{ get; set; }
[XmlAttribute(AttributeName = "ID")] //Problem is here. same attr name ID.
public int YYY_ID { get; set; }
[XmlElement(ElementName = "YYY")]
public string YYY_Value { get; set; }
}
我的XML:
<MyClass>
<XXX ID="123">Some Values</XXX>
<YYY ID="567">Some Values</YYY>
</MyClass>
我的问题:
我想将上面的XML反序列化为一个对象。
在运行时期间,发生了错误,不允许在2个不同的元素和相同的根目录下具有相同的属性名称。
如何解决这个问题?
P / S:我无法更改XML,我不是它的拥有者。
提前致谢。
答案 0 :(得分:2)
要做到这一点,您需要手动执行(反)序列化,或者您需要DTO与xml具有大致相同的布局。例如:
public class Something { // need a name here to represent what this is!
[XmlAttribute] public int ID {get;set;}
[XmlText] public string Value {get;set;}
}
然后
public class MyClass {
public Something XXX {get;set;}
public Something YYY {get;set;}
}