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将抛出一个,只有一个可以被捕获.