我有一个具有这种结构的文档:
<page name="some-name">
<header>
//some content
</header>
<section header="value">
//some content
</section>
</page>
当我反序列化此文档以获取 Page 类的实例时,我总是遇到反射错误和 InvalidOperationException。我通过调试和大量尝试和错误发现这个错误的原因是我有一个节点(XMLElement)和一个属性(XMLAttribute)的相同名称,在这个例子中名称是“header”。XML 结构不能以任何方式改变,所以这不是解决方案。有没有办法让它工作,或者我必须稍后在反序列化之外添加属性值?
类是这种形式:
[XmlType("page")]
public class Page
{
[XmlAttribute("name")]
public string Name { get; set }
[XmlElement("header")]
public Header Header { get; set }
[XmlElement("section")]
public Section Section { get; set }
}
[XmlType("section")]
public class Section
{
[XmlAttribute("header")]
public string Header { get; set }
}
[XmlType("header")]
public class Header
{
//elements and attributes as properties
}