次のコードは、XSDスキーマを使用したXMLファイルの検証に役立ちます。XSDスキーマを使用したXml検証
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add(null, xsdFilePath);
settings.ValidationType = ValidationType.Schema;
settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler);
XmlDocument document = new XmlDocument();
document.Load(xmlFilePath);
XmlReader rdr = XmlReader.Create(new StringReader(document.InnerXml), settings);
while (rdr.Read())
{
}
isValid = true;
のValidationEventHandlerもエラーが何であるかを私に語ったが、「どこ」や、それらが配置されている「はライン上で」上を私に教えてくれありません。 XMLの検証に失敗した行番号を取得する方法はありますか?
+1完全に逃したe.Exception.LineNumberとe.Exception.LinePosition。 – Elroy
なぜこれを最初にXmlDocumentに入れていますか?それは何もしていないようです。 –
@JeremyHolovacs真実、それは2007年のフォーラム(http://www.devnewsgroups.net/dotnetframework/t43762-catching-line-numbers-with-xmldocument-validate.aspx)の回答の一つに過ぎません。次のようなコメントがありました。「XmlDocumentを削除し、XmlNodeReaderを の 'StringReader'に置き換えると動作します。 – VonC