XML的XSD验证有多昂贵

本文关键字:验证 XSD XML | 更新日期: 2023-09-27 18:18:40

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

有什么技巧和技巧来验证更快吗?

你能贴一些代码的例子,工作更快与大型xml验证?

编辑1:我这样验证使用XSD验证XML

编辑2:对于大文件需要10秒以上。我需要验证在一秒内非常快。

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

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

XML的XSD验证有多昂贵

当前正在将整个文档加载到内存中,这是非常昂贵的,无论是否验证。一个更好的选择是通过阅读器进行解析,如MSDN所示。该页上示例中的要点:

  • 它从不加载整个文档
  • while(reader.Reader())只是枚举节点级别的整个文件
  • 验证通过XmlReaderSettings
  • 启用

有验证的文档解析时间是没有验证的文档解析时间的两倍,这是合理的。但是这个比例会根据你的模式而有很大的不同。例如,如果每个属性都由正则表达式控制,并且正则表达式很复杂,那么验证的开销可能比这条经验法则建议的要高得多。

同样,这也没有考虑到构建复杂模式的成本。如果您有一个定义数百个元素类型的大模式,那么编译模式可能比使用它来验证几兆字节的数据需要更长的时间。