Я пытаюсь проанализировать пользовательский XSD для создания списка элементов, для которых определены пользовательские атрибуты. Я вставил образец узла из моего XSD ниже. В моем случае я пытаюсь создать список всех элементов (простых и сложных типов), которые были помечены как статические. Образец -
<xs:element name="ATestEnum">
<xs:annotation>
<xs:appinfo>
<ConfigurationMemberMetadata>
<Static>False</Static>
</ConfigurationMemberMetadata>
</xs:appinfo>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Sample1" />
<xs:enumeration value="Sample2" />
</xs:restriction>
</xs:simpleType>
</xs:element>
Я просто не могу найти способ запросить «внутри» элемента для нужных мне свойств. Я дошел до этого -
var doc = XDocument.Load(schemaFileName);
foreach (var element in doc.Descendants(xs + "element"))
{
Console.WriteLine(element.Attribute("name").Value);
}
Это дает мне список всех элементов в xsd, но не конкретное свойство (ConfigurationMemberMetadata), которое мне нужно проверить. Я вижу метод element.Annotation (type), но как мне привести его к извлечению полей, которые я ищу?
Я также пытался использовать XmlTextReader и читать схему, компилировать набор схем и перебирать элементы, но это тоже не помогает.
Может ли кто-нибудь указать мне правильное направление? Я очень новичок в разборе XML и буду очень признателен за вашу помощь! Спасибо.