【发布时间】:2013-08-07 19:05:23
【问题描述】:
我正在根据模式 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;
但我需要代码在将验证中发现的所有错误发送到我的日志之前构建一个列表,而不是始终只显示找到的第一个错误。
有什么想法吗?
【问题讨论】:
-
您的 catch 对错误没有任何作用。你遇到了什么错误,为什么你不做任何事情?
-
你为什么不返回一个异常呢?然后简单地记录它,或者把它放在一个数组或列表上。
-
异常时只有一个错误,然后退出验证。我想将所有错误存储在一个列表中,然后将其返回以进行处理。上面的代码只是我找到的一个例子。
-
“异常成立...” 你说的这个异常在哪里?你的捕获会压制任何异常。是的,函数在遇到第一个错误时会返回
false,但你甚至不知道错误是什么! -
我想做什么并不难理解,但我改了代码。我希望现在更容易理解了。