C# 在关联的架构定义类型中查找xml元素的注释

C# 在关联的架构定义类型中查找xml元素的注释,c#,.net,xml,xsd,C#,.net,Xml,Xsd,我在模式中定义了一个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:st

我在模式中定义了一个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>

罗伯特·史密斯
橡树大道8号
老城
帕
95819
这个模式和实例数据在编译时是未知的,所以所有的分析都是动态进行的。此模式的简单性仅用于示例目的。真正的模式将更加复杂

假设已将模式加载到System.Xml.schema.XmlSchema中,当我访问实例Xml文档中的每个节点时,如何获取关联的模式元素并读取其appinfo注释?在节点处使用。然后查看SchemaType.Annotation.Items


注意,您的元素/注释嵌套并不完全正确,但我认为这只是简化的一个无意的副作用

我还是有麻烦。假设我在节点
8oak Avenue
reader.SchemaInfo.SchemaType.Annotation
为空。在调试器可视化工具中,我正在搜索XMLSchema(在我的例子中是XMLSchemaSet)和XMLReader的对象树,没有找到任何非空的注释字段。是的,在本例中我只需要
reader.SchemaInfo.SchemaElement.Annotation
。我不知道为什么我以前找不到它。谢谢