3

我想通过在 C# 中使用 xsd 模式来验证大型 xml 文件。对于 1000 行 xml 代码的文件,验证需要很长时间。

是否有任何提示和技巧可以更快地进行验证?

您能否发布一些使用大型 xml 验证更快的代码示例?

编辑 1:我像这样 验证 Validating XML with XSD

编辑 2:对于大文件需要超过 10 秒。而且我需要在一秒钟内快速完成验证。

编辑 3:文件大小大于 10 Mb

编辑4:我也在考虑这种方法,我也想将xml文件存储在数据库和xsd中。

4

2 回答 2

4

您当前正在将整个文档加载到内存中,无论验证如何,这都是昂贵的。更好的选择是仅通过阅读器进行解析,即如 MSDN 上所示。该页面上示例的关键点:

  • 它从不加载整个文档
  • 只是在while(reader.Reader())节点级别枚举整个文件
  • 验证通过启用XmlReaderSettings
于 2011-12-22T13:11:30.380 回答
2

预计解析带有验证的文档所花费的时间大约是不经过验证的解析的两倍是合理的。但是这个比率会根据您的架构而有很大差异。例如,如果每个属性都由正则表达式控制,并且正则表达式很复杂,那么验证的开销可能远高于此经验法则所建议的。

此外,这不允许构建复杂模式的成本。如果您有一个定义了数百种元素类型的大型架构,那么编译架构可能比使用它来验证几兆字节的数据需要更长的时间。

于 2011-12-22T18:00:10.670 回答