最简单/最简单/最干净的方法是什么:
使用.net。
答案 0 :(得分:10)
基本上,要进行XSD验证,您需要使用带有ReaderSettings的XmlReader来定义要验证的XSD文件,以及响应/捕获验证错误的事件。
要阅读XSD文件,请使用以下内容:
StreamReader xsdReader = new StreamReader(xsdFileName);
XmlSchema Schema = new XmlSchema();
Schema = XmlSchema.Read(xsdReader, new ValidationEventHandler(XSDValidationEventHandler));
以及捕获在读取XSD时可能出现的任何错误的事件处理程序(例如,如果它本身无效)将具有此签名:
private static void XSDValidationEventHandler(object sender, ValidationEventArgs e)
错误消息在e.Message中。
在内存中加载XSD后,实例化XmlReader并使用正确的设置来强制执行XSD验证:
XmlReaderSettings ReaderSettings = new XmlReaderSettings();
ReaderSettings.ValidationType = ValidationType.Schema;
ReaderSettings.Schemas.Add(Schema);
ReaderSettings.ValidationEventHandler += new ValidationEventHandler(XMLValidationEventHandler);
此错误事件处理程序具有与上面相同的签名。
然后从头到尾实际读取文件:
XmlTextReader xmlReader = new XmlTextReader(xmlFileName);
XmlReader objXmlReader = XmlReader.Create(xmlReader, ReaderSettings);
while (objXmlReader.Read()) { }
如果发生任何验证错误,则调用您的事件处理程序,您可以在那里捕获错误消息,例如将它们显示给用户(或者只是有一个标志,表明验证是否成功 - 你的电话:))
答案 1 :(得分:6)
根据您希望拥有的容差级别和错误报告,您可能会发现.NET 3.5中引入的新XML Api非常有用 - 类XDocument,XElement,{{3等等,全部来自XAttribute。
新XML Api的设计受到旧XMLDocument设计的经验教训的影响很大,而且更轻巧,更易于使用。
答案 2 :(得分:2)
使用XMLDocument和XMLNode对象。
您可以使用XMLDocument中的Load和LoadXML方法加载xml文档。然后,您可以使用SelectSingleNode根据该节点的XPath获取值。或者,您可以使用SelectNodes方法加载整个节点。
您可以使用XMLDocument对象的Validate方法根据XSD验证XML。