.net - 在 .net 中验证和读取 xml 文件的最简单方法?

标签 .net xml xsd

什么是最简单/最简单/最干净的方法:

  1. 从文件系统中读取一个xml文件
  2. 根据 xsd 验证 xml
  3. 将部分xml文件读入变量

使用.net。

最佳答案

基本上,要进行 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()) { }

如果发生任何验证错误,您的事件处理程序将被调用,您可以在其中捕获错误消息,例如向用户显示它们(或者只是有一个标志指示验证是否成功 - 你的电话:))

关于.net - 在 .net 中验证和读取 xml 文件的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/444064/

相关文章:

c# - 存储库模式与 DTO 模式方法

java - 可以多次调用 URIResolver.resolver() 吗?我需要添加多个 documentFragments

php - 在 PHP 中“随机”访问 XML(带有命名空间)节点的子节点

java - 将xml文档导入到jaxb创建的实体结构中

.net - 录制编程时间 - 写入还是下载?

.net - 递归地从表中删除记录 - SQL Server 2008

xml - 使用 XML 模式作为 OO 继承 (JAXB) - 可能吗?

java - 如何注释 JAXB 属性以使用 xsd :time rather than xsd:datetime?

c# - 如何不在 nUnit 2.6.4 xml 结果中显示堆栈跟踪?

c# - 在 Silverlight(或 WPF)中构建 Roguelike