Saxon を使用して Xsd Validation をテストしようとしています。実際の検証に到達すると、validator.Run() が最初のエラーに到達したときに例外をスローし、その後続行しないため、最初のエラーのみがキャッチされます。多くのエラーを含む xml ファイルがある場合、これは明らかに望ましくありません。例外がスローされた後に検証を続行する方法はありますか、または Saxon を使用した別の検証方法はありますか?
このコードは、Saxon がドキュメントのサンプル フォルダーに持っている検証の 1 つの例に基づいており、これは検証を実行するセクションです。
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;
}
}
}