以下是架构的片段:
</xs:schema>
<xs:attribute name="myFields">
<xs:annotation>
<xs:documentation>Blah Blah Blah</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="field_1"/>
<xs:enumeration value="field_2"/>
<xs:enumeration value="field_3_etc"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:schema>
我如何&#34;到达&#34; simpleType?我希望它最好是一个字符串列表。
到目前为止,我设法做的就是掌握属性,因为它有一个名字。由于某种原因,我无法给simpleType命名(我认为只允许顶级项目使用名称)。
以下是我的代码目前的样子:
var schemaSet = new XmlSchemaSet();
schemaSet.Add("", XMLPath + SchemaFileName);
schemaSet.Compile();
var schema = schemaSet.Schemas().OfType<XmlSchema>().First();
var attrs = schema.Items.OfType<XmlSchemaAttribute>()
.First(x => x.Name == "myFields");
答案 0 :(得分:0)
好的,我明白了。
我需要将AttributeSchemaType内容强制转换为XmlSchemaSimpleTypeRestriction,然后获取其中的“Facets”。
var innerContentsOfRoot = (XmlSchemaSimpleTypeRestriction)attribute.AttributeSchemaType.Content;
var strings = innerContentsOfRoot.Facets.OfType<XmlSchemaEnumerationFacet>().Select(d => d.Value);