我已经创建了一个类似于以下内容的架构定义......
<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;
}
}
嗯,我真的假设应该更简单:)
答案 0 :(得分:2)
应该注意,元素的每个允许的子元素组在XmlSchema类中具有相应的属性,除了一个元素。这导致一些人认为无法从XmlSchema类获取注释,但实际情况并非如此。可以从XmlSchema类的Items属性中检索注释。以下代码示例演示如何在books.xsd架构中打印注释的内容。
Secrets of the System.Xml.Schema Namespace (on MSDN)
(注:2004年;未经测试,未确认)