你可以看看使用的架构对象模型(SOM)在此代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml;
using System.Xml.Schema;
namespace Testing.Xml
{
class Program
{
static void Main(string[] args)
{
// read the schema
XmlSchema schema;
using (var reader = new StreamReader(@"c:\path\to\schema.xsd"))
{
schema = XmlSchema.Read(reader, null);
}
// compile so that post-compilation information is available
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(schema);
schemaSet.Compile();
// update schema reference
schema = schemaSet.Schemas().Cast<XmlSchema>().First();
var simpleTypes = schema.SchemaTypes.Values.OfType<XmlSchemaSimpleType>()
.Where(t => t.Content is XmlSchemaSimpleTypeRestriction);
foreach (var simpleType in simpleTypes)
{
var restriction = (XmlSchemaSimpleTypeRestriction) simpleType.Content;
var enumFacets = restriction.Facets.OfType<XmlSchemaEnumerationFacet>();
if (enumFacets.Any())
{
Console.WriteLine("" + simpleType.Name);
foreach (var facet in enumFacets)
{
Console.WriteLine(facet.Value);
}
}
}
}
}
}
此代码只适用于简单的,名为类型,虽然 - 如果你有元素或包含匿名简单类型的属性,那么它会变得非常复杂,因为您必须遍历所有元素和属性才能找到具有枚举构面限制内容的简单类型。
来源
2010-01-29 06:22:04
Sam