【问题标题】:How expensive is a XSD validation of XML?XML 的 XSD 验证有多昂贵?
【发布时间】:2012-01-26 02:29:11
【问题描述】:

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

是否有任何提示和技巧可以加快验证速度?

您能否发布一些在大型 xml 验证中运行得更快的代码示例?

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

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

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

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

【问题讨论】:

  • 文件有多大(字节;“行”是不明确的),目前需要多长时间,您目前如何处理?

标签: c# xml xsd xsd-validation


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 2016-01-31
    • 2010-10-08
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2012-09-20
    • 2011-10-23
    相关资源
    最近更新 更多