Я не знаю ни одного «легкого» решения - я сделал что-то похожее на то, что вы описываете, но «вручную» - то есть написал довольно много кода.
Единственная библиотека, которую мне удалось найти, которая делает что-то подобное, это: http://xpath -on-schema.sourceforge.net / , но я на самом деле не пробовал, потому что это Java и я человек .NET.
Если у вас все в порядке с разработкой чего-либо в .NET, я бы предложил использовать класс XmlSchema
:
using (FileStream fs = new FileStream(xsdPath, FileMode.Open, FileAccess.Read)) {
XmlSchema schema = XmlSchema.Read(fs, null);
}
а затем существуют относительно простые в использовании методы и классы для доступа ко всему, что вам нужно в схеме - например, существует класс XmlSchemaSimpleTypeRestriction
, соответствующий ограничению на простой тип, такой как строка, который содержит в свойстве Facets
список допустимых значений (или других ограничений).