XmlSchema在<schema>级别</schema>读取注释

时间:2011-12-06 12:52:23

标签: c# xsd

我已经创建了一个类似于以下内容的架构定义......

<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();

但是我无法找回我的注释,我缺少什么?

增加: 感谢Morawski的回复,我最终得到的代码是:

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 个答案:

答案 0 :(得分:2)

  

应该注意,元素的每个允许的子元素组在XmlSchema类中具有相应的属性,除了一个元素。这导致一些人认为无法从XmlSchema类获取注释,但实际情况并非如此。可以从XmlSchema类的Items属性中检索注释。以下代码示例演示如何在books.xsd架构中打印注释的内容。

Secrets of the System.Xml.Schema Namespace (on MSDN)

(注:2004年;未经测试,未确认)