mar*_*c_s 10
基本上,为了进行XSD验证,您需要使用带有ReaderSettings的XmlReader来定义要验证的XSD文件,以及响应/捕获验证错误的事件.
要读取XSD文件,请使用以下内容:
StreamReader xsdReader = new StreamReader(xsdFileName);
XmlSchema Schema = new XmlSchema();
Schema = XmlSchema.Read(xsdReader, new ValidationEventHandler(XSDValidationEventHandler));
Run Code Online (Sandbox Code Playgroud)
并且用于捕获在读取XSD时可能出现的任何错误的事件处理程序(例如,如果它本身无效)将具有此签名:
private static void XSDValidationEventHandler(object sender, ValidationEventArgs e)
Run Code Online (Sandbox Code Playgroud)
错误消息位于e.Message中.
在内存中加载XSD后,实例化XmlReader并使用适当的设置来强制执行XSD验证:
XmlReaderSettings ReaderSettings = new XmlReaderSettings();
ReaderSettings.ValidationType = ValidationType.Schema;
ReaderSettings.Schemas.Add(Schema);
ReaderSettings.ValidationEventHandler += new ValidationEventHandler(XMLValidationEventHandler);
Run Code Online (Sandbox Code Playgroud)
此错误事件处理程序具有与上面相同的签名.
然后实际上从头到尾读取文件:
XmlTextReader xmlReader = new XmlTextReader(xmlFileName);
XmlReader objXmlReader = XmlReader.Create(xmlReader, ReaderSettings);
while (objXmlReader.Read()) { }
Run Code Online (Sandbox Code Playgroud)
如果发生任何验证错误,您的事件处理程序被调用,您可以在那里捕获错误消息,例如将它们显示给用户(或者只是有一个标志,指示验证是否成功 - 您的电话:))
根据您希望具有的容差级别和错误报告,您可能会发现.NET 3.5中引入的新XML Api非常有用 - 类XDocument,XElement,XAttribute等,所有这些都来自System.Xml.Linq命名空间.
新的XML Api的设计受到旧XMLDocument设计的经验教训的影响很大,而且更轻巧,更易于使用.
| 归档时间: |
|
| 查看次数: |
4998 次 |
| 最近记录: |