XmlSchema чтение аннотации на уровне <schema> - PullRequest
2 голосов
/ 06 декабря 2011

Я создал определение схемы, которое начинается следующим образом ...

<xs:schema attributeFormDefault="unqualified"  elementFormDefault="qualified" targetNamespace="urn:my.namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:it="urn:mynamespace">
  <xs:annotation>
    <xs:appinfo>My annotation</xs:appinfo>
  </xs:annotation>

Затем я загружаю схему и компилирую ее с помощью:

System.Xml.Schema.XmlSchemaSet set = new System.Xml.Schema.XmlSchemaSet();
                                    set.Add(schema);
                                    set.Compile();

но мне не удается вернуть аннотацию, чего мне не хватает?

Дополнительно: Благодарю Моравского за ответ: код, который у меня получился:

string appInfoValue = string.Empty;
                                    var annotation = schema.Items.OfType<XmlSchemaAnnotation>().FirstOrDefault();
                                    if (null != annotation)
                                    {
                                        var appInfo = annotation.Items.OfType<XmlSchemaAppInfo>().FirstOrDefault();
                                        if (null != appInfo)
                                        {
                                            appInfoValue = appInfo.Markup[0].InnerText;
                                        }
                                    }

Ну, я действительно предположил, что должно быть проще:)

1 Ответ

2 голосов
/ 06 декабря 2011

Следует отметить, что каждая из групп разрешенных дочерних элементов элемента имеет соответствующее свойство в классе XmlSchema, кроме одного, элементов.Это привело некоторых к мысли, что нельзя получить аннотации из класса XmlSchema, а это не так.Аннотации могут быть получены из свойства Items класса XmlSchema.В следующем примере кода показано, как распечатать содержимое аннотации в схеме books.xsd.

Секреты пространства имен System.Xml.Schema (в MSDN)

(Примечание: от 2004 года; не проверено, не подтверждено)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...