XML的XSD验证有多贵?

时间:2011-12-22 12:44:34

标签: c# xml xsd xsd-validation

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

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

你能发布一些代码示例,它们可以通过大型xml验证更快地运行吗?

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

期望使用验证解析文档所花费的时间大约是没有验证的解析的两倍是合理的。但是这个比例会有很大差异,具体取决于你的架构。例如,如果每个属性都由正则表达式控制,并且正则表达式很复杂,那么验证的开销可能远高于这个经验法则。

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