我正在尝试使用带有 XDocument.Validate 扩展方法的 Xml 架构来验证 Xml 片段。每当使用无效的 Xml 片段时,ValidationEventHandler 都会正确触发,但是 XmlSchemaValidationException 的 LineNumber 和 LinePosition 属性都是 0。
private bool Validate(XDocument doc)
{
bool isValid = true;
List<string> validationErrors = new List<string>();
XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add(null, "MyCustomSchema.xsd");
doc.Validate(schemas, (sender, args) =>
{
validationErrors.Add(String.Format("{0}: {1} [Ln {2} Col {3}]",
args.Severity,
args.Exception.Message,
args.Exception.LineNumber,
args.Exception.LinePosition));
isValid = false;
}, false);
return isValid;
}
在上面的示例中,我的目标是使用 validationErrors 通知用户验证失败的原因。但是,当使用此方法时,LineNumber 和 LinePosition 都为 0。
该片段看起来很简单,并且在针对有效和无效 Xml 片段进行验证方面似乎可以按预期工作。
提前致谢!