XmlSchema读取注释的水平

本文关键字:水平 schema 读取 注释 XmlSchema | 更新日期: 2023-09-27 18:16:50

我已经创建了一个模式定义,开始如下…

<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;
                                        }
                                    }

嗯,我真的认为应该更简单:)

XmlSchema读取注释<schema>的水平

应该注意的是,除了elements之外,元素允许的每一个子元素组在XmlSchema类中都有相应的属性。这导致一些人认为不能从XmlSchema类获得注释,但事实并非如此。可以从XmlSchema类的Items属性中检索注解。下面的代码示例显示了如何在图书中打印注释的内容。xsd模式。

System.Xml.Schema命名空间的秘密(MSDN)

(注:日期为2004;未检测,未确认)