此代码根据XSD文件验证XML文件并返回错误和行号。
public static void ValidateXML(Stream stream)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("", "yourXSDPath");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(stream, settings);
XmlDocument document = new XmlDocument();
document.Load(reader);
ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);
document.Validate(eventHandler);
reader.Close();
}
static void ValidationEventHandler(object sender, ValidationEventArgs e)
{}
try
{
ValidateXML(yourXMLStream);
}
catch (XmlSchemaValidationException ex)
{
Console.WriteLine(String.Format("Line {0}, position {1}: {2}", ex.Message, ex.LineNumber, ex.LinePosition));
}
来源
2010-05-26 21:05:10
jlp
你可以发布xsd文件吗? – Numenor 2009-12-29 14:31:49
有趣的问题。你有没有找到高级别的解决方案?在没有用线和位置解释错误位置的意义上。谢谢 – robob 2012-06-20 13:43:19