Вам нужно использовать XmlSchemaSet
, например ::
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(targetNamespace, schemaUri);
schemaSet.Compile();
foreach(XmlSchemaElement element in schemaSet.GlobalElements.Values)
{
// do stuff...
}
РЕДАКТИРОВАТЬ: Извините, что не яснее.
Если в комментарии указано // do stuff...
, вам нужно пройти через унаследованные типы каждого элемента, доступные в XmlSchemaElement.SchemaType
, и встроенный тип элемента, который доступен под XmlSchemaElement.ElementSchemaType
.
MSDN содержит всю информацию, к которой вы стремитесь, но она похожа на лабиринт и требует разбора, а также проб и ошибок, чтобы разобраться в этом.
Согласно моему комментарию, следующий класс из одного из моих проектов с открытым исходным кодом может быть полезен здесь:
http://bitbucket.org/philbooth/schemabrute/src/tip/LibSchemaBrute/Navigator.cs