如何在创建XmlSerializer对象时解决此异常?

时间:2010-10-27 17:19:01

标签: c# xml xml-serialization xsd xsd.exe

我在http://www.w3.org/2001/XMLSchema.xsd下载了XML Schema for XML Schema。

然后我使用 XSD.EXE 从下载的文件中创建一个类。我打电话给班级schema.cs

然后我执行了这行代码:

XmlSerializer serializer = new XmlSerializer(typeof(schema));

并收到此错误:

  

来自的XML元素'annotation'   命名空间   'http://www.w3.org/2001/XMLSchema'是   已存在于当前范围内。

如何在不破坏架构的情况下找到重复元素并进行修复?

2 个答案:

答案 0 :(得分:1)

我认为生成的类有缺陷。

我更改了属性以修复第一个错误,但发现了一个新错误。

/// <remarks/>
//[System.Xml.Serialization.XmlElementAttribute("annotation", typeof(annotation))]
[System.Xml.Serialization.XmlElementAttribute("Items", typeof(annotation))]
[System.Xml.Serialization.XmlElementAttribute("import", typeof(import))]
[System.Xml.Serialization.XmlElementAttribute("include", typeof(include))]
[System.Xml.Serialization.XmlElementAttribute("redefine", typeof(redefine))]
public openAttrs[] Items {
    get {
        return this.itemsField;
    }
    set {
        this.itemsField = value;
    }
}

答案 1 :(得分:0)

因为注释元素只是注释,所以您可以尝试简单地过滤所有这些。首先将XML加载到XDocument并删除所有注释元素。