在针对模式文件验证xml之后获取错误列表

Raf*_*ael 4 c# xml asp.net xsd

我正在针对架构xsd验证XML文件.到目前为止,代码在发生故障时会生成异常.

        bool isValid = true;
        List<string> errorList = new List<string>();
        try
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.Schemas.Add(null, schemaFilePath);
            settings.ValidationType = ValidationType.Schema;
            XmlDocument document = new XmlDocument();
            document.LoadXml(xml);
            XmlReader rdr = XmlReader.Create(new StringReader(document.InnerXml), settings);
            while (rdr.Read()) { }
        }
        catch (Exception ex)
        {
            errorList.Add(ex.Message);
            isValid = false;
        }

        LogErrors(errorList);
        return isValid;
Run Code Online (Sandbox Code Playgroud)

但我需要代码在将其发送到我的日志之前构建一个在validate中找到的所有错误的列表,而不是总是只显示找到的第一个错误.

有什么想法吗?

git*_*tgo 10

您可以使用该Validate 方法ValidationEventHandler.您可以按照MSDN的方式ValidationEventHandler单独创建,也可以根据需要内联.

例如

    //...Other code above
    XmlDocument document = new XmlDocument();
    document.Load(pathXMLCons);
    document.Validate((o, e) => 
                      { 
                          //Do your error logging through e.message 
                      });
Run Code Online (Sandbox Code Playgroud)

如果你不这样做,XmlSchemaValidationException将抛出一个,只有一个可以被捕获.