XmlDocument.Validate不会因多个错误而触发

我正在尝试针对现有的XmlSchemaSetvalidation传入的输入xmlDocument。 以下是代码:

public class ValidateSchemas { private bool _isValid = true; public List errorList = new List(); 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); } } 

从validation角度来看,代码工作正常。 但是,errorList仅捕获第一个节点错误。 它不捕获其他节点错误。 看起来事件只被触发一次。 如何做到这一点,请帮忙。 请注意我将xmldocument作为输入,因此不使用阅读器。

这正是XmlDocument.Validate方法的预期行为。 一旦找到validation错误,它就会停止validation进程并返回错误。 因此,用户必须修复该错误并再次进行validation。

此行为与Visual Studio错误列表不同。 例如,如果代码中只有一个语法错误,则有时会返回100个错误。 但实际上你必须在一个地方只修一个。 因此,可能有利有弊取决于具体情况。 但是,我认为您不能轻易获得XMLDocument的所有validation错误,它本身就以不同的方式工作。