XDocument.Validate拡張メソッドでXmlスキーマを使用してXmlフラグメントを検証しようとしています。無効なXMLフラグメントが使用されるたびのValidationEventHandlerが正しく発射しかしXmlSchemaValidationExceptionの両方の行番号とLinePosition特性が0XmlSchemaValidationException.LineNumberとLinePositionは、XDocument.ValidateでXmlスキーマを検証するときに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フラグメントと無効なXmlフラグメントの両方を検証するうえで、期待通りに機能しているようです。
ありがとうございます!
私が見ることができる限り、インスタンス化されるXmlSchemaValidatorは内部DummyPostionのみを使用し、より優れた実装を注入するオプションは表示されません。 – rene