har*_*2ms 5 .net c# xml xmldocument xml-validation
我正在尝试针对现有的 XmlSchemaSet 验证传入的输入 xmlDocument。以下是代码:
public class ValidateSchemas
{
private bool _isValid = true;
public List<string> errorList = new List<string>();
public bool ValidateDocument(XmlDocument businessDocument)
{
XmlSchemaSet schemaSet = SchemaLoader.Loader();
bool isValid = Validate(businessDocument, SchemaLoader._schemaSet);
return isValid;
}
public bool Validate(XmlDocument document, XmlSchemaSet schema)
{
ValidationEventHandler eventHandler = new ValidationEventHandler(HandleValidationError);
document.Schemas = schema;
document.Validate(eventHandler);
return _isValid;
}
private void HandleValidationError(object sender, ValidationEventArgs ve)
{
_isValid = false; errorList.Add(ve.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
从验证的角度来看,代码运行良好。但是 errorList 仅捕获第一个节点错误。它不会捕获其他节点错误。看起来该事件仅被触发一次。如何做到这一点,请帮助。请注意,我将 xmldocument 作为输入,因此没有使用阅读器。
这正是XmlDocument.Validate方法的预期行为。一旦发现验证错误,它就会停止验证过程并返回错误。因此,用户必须修复该错误并再次验证。
此行为与 Visual Studio 错误列表不同。例如,如果代码中有一个语法错误,有时它会返回数百个错误。但实际上你只需在一处修复一个即可。所以,有利有弊,视情况而定。但是,我认为您无法轻松获得 XMLDocument 的所有验证错误,它本质上以不同的方式工作。
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |