我有这种结构的文件:反序列化XML在C#中使用属性和元素的名称相同 - 反思错误
<page name="some-name">
<header>
//some content
</header>
<section header="value">
//some content
</section>
</page>
当我反序列化这个文件得到Page类的一个实例,我总是得到反射错误和InvalidOperationException。我想通过调试和大量的尝试和错误,这个错误的原因是,我有一个节点(XMLElement)和一个属性(XMLAttribute)的名称相同,在这个例子中名称是“标题”。 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
}