![](/img/trans.png)
[英]Deserialize xml using C# containing element with an attribute in a different namespace
[英]Deserialize XML in C# with the same name of attribute and element - reflection error
我有一个具有这种结构的文档:
<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
}
使用[XmlRoot("page")]
指定生成的xml根元素的名称,而不是使用[XmlType("page")]
https://msdn.microsoft.com/zh-CN/library/system.xml.serialization.xmlrootattribute(v=vs.110).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.