Найти аннотацию для элемента xml в связанном с ней типе, определенном схемой - PullRequest
3 голосов
/ 19 марта 2011

У меня есть тип xml, USAddress, определенный в схеме:

<xsd:element name="MyUSAddress" type="USAddress"/>
<xsd:complexType name="USAddress">
  <xsd:sequence>
    <xsd:element name="name"   type="xsd:string"/>
    <xsd:element name="street" type="xsd:string">
      <xsd:annotation>
        <xsd:appinfo>Special Metadata</xsd:appinfo>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="city"   type="xsd:string"/>
    <xsd:element name="state"  type="xsd:string">
      <xsd:annotation>
        <xsd:appinfo>Special Metadata</xsd:appinfo>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="zip"    type="xsd:decimal"/>
  </xsd:sequence>
</xsd:complexType>

И элемент XML в документе экземпляра данных:

<MyUSAddress>
   <name>Robert Smith</name>
   <street>8 Oak Avenue</street>
   <city>Old Town</city>
   <state>PA</state>
   <zip>95819</zip>
</MyUSAddress>

Эта схема и данные экземпляра неизвестны во время компиляции, поэтому весь анализ выполняется динамически. Простота этой схемы только для примера. Реальные схемы будут более сложными.

Если у меня есть схема, загруженная в System.Xml.Schema.XmlSchema, когда я посещаю каждый узел в своем XML-документе экземпляра, как я могу получить связанный элемент схемы и прочитать его аннотацию appinfo?

1 Ответ

3 голосов
/ 20 марта 2011

Используйте свойство XMLReader.SchemaInfo , пока вы находитесь на узле. Тогда посмотрите в SchemaType.Annotation.Items.

Обратите внимание, что ваше вложение элементов / аннотаций не совсем верно, но я предполагаю, что это только как непреднамеренный побочный эффект упрощения.

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