使用 c# 和 .net 3.5 我正在尝试针对包含的架构验证 xml 文档。
架构及其包括如下
Schema1.xsd -> 包含另一个.xsd
another.xsd -> 包括 base.xsd
当我尝试将 Schema1.xsd 添加到 XmlDocument 时,我收到以下错误。
类型“YesNoType”未声明或不是简单类型。
我相信我收到此错误是因为当我加载 Schema1.xsd 架构时未包含 base.xsd 文件。
我正在尝试使用 XmlSchemaSet 类,并将 XmlResolver uri 设置为模式的位置。
注意:所有模式都位于同一目录 E:\Dev\Main\XmlSchemas
这是代码
string schemaPath = "E:\\Dev\\Main\\XmlSchemas";
XmlDocument xmlDocSchema = new XmlDocument();
XmlSchemaSet s = new XmlSchemaSet();
XmlUrlResolver resolver = new XmlUrlResolver();
Uri baseUri = new Uri(schemaPath);
resolver.ResolveUri(null, schemaPath);
s.XmlResolver = resolver;
s.Add(null, XmlReader.Create(new System.IO.StreamReader(schemaPath + "\\Schema1.xsd"), new XmlReaderSettings { ValidationType = ValidationType.Schema, XmlResolver = resolver }, new Uri(schemaPath).ToString()));
xmlDocSchema.Schemas.Add(s);
ValidationEventHandler valEventHandler = new ValidationEventHandler
(ValidateNinoDobEvent);
try
{
xmlDocSchema.LoadXml(xml);
xmlDocSchema.Validate(valEventHandler);
}
catch (XmlSchemaValidationException xmlValidationError)
{
// need to interogate the Validation Exception, for possible further
// processing.
string message = xmlValidationError.Message;
return false;
}
任何人都可以指出我在针对具有嵌套包含的架构验证 xmldocument 的正确方向。