我正在尝试使用 Saxon 测试 Xsd 验证。当我进行实际验证时,仅捕获第一个错误,因为 validator.Run() 在遇到第一个错误时会引发异常,之后不会继续。当您有一个包含许多错误的 xml 文件时,这显然不是您想要的。有没有办法在抛出异常后继续验证,或者是否有另一种使用 Saxon 的验证方法?
此代码基于 Saxon 在其文档的示例文件夹中的一个验证示例,这是运行验证的部分。
SchemaValidator validator = manager.NewSchemaValidator();
using (Stream xmlFile = File.OpenRead(fileName))
{
using (XmlReader xmlValidatingReader = XmlReader.Create(xmlFile))
{
validator.SetSource(xmlValidatingReader);
validator.ErrorList = new ArrayList();
try
{
validator.Run();
}
catch (Exception)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("Instance validation failed with " + validator.ErrorList.Count + " errors");
foreach (StaticError error in validator.ErrorList)
{
sb.AppendLine("At line " + error.LineNumber + ": " + error.Message);
tbXsdOutput.Text = sb.ToString();
}
return;
}
}
}