Как устранить эту исключительную ситуацию при создании объекта XmlSerializer? - PullRequest
3 голосов
/ 27 октября 2010

Я загрузил XML-схему для XML-схем по адресу http://www.w3.org/2001/XMLSchema.xsd.

Затем я использовал XSD.EXE , чтобы создать класс из загруженного файла. Я позвонил в класс schema.cs.

Затем я выполнил эту строку кода:

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

и получил эту ошибку:

Элемент XML «аннотация» из Пространство имен * http://www.w3.org/2001/XMLSchema' уже присутствует в текущем объеме.

Как найти дубликат элемента и исправить его, не нарушая схему?

Ответы [ 2 ]

1 голос
/ 27 октября 2010

Я думаю, что у сгенерированного класса есть недостатки.

Я изменил атрибут, чтобы исправить первую ошибку, но обнаружена новая ошибка.

/// <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;
    }
}
0 голосов
/ 27 октября 2010

Поскольку элементы аннотации - это просто комментарии, вы можете попробовать просто отфильтровать их все. Просто сначала загрузите XML в XDocument и удалите все аннотированные элементы.

...