2013-10-15 32 views
0

我有这种结构的文件:反序列化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 
} 

回答

0

您可以尝试使用产生从Xsd.exe XML类,看看它是如何设法解决这个问题。 Here是关于从XML生成类的更多信息。

相关问题