C# XML的XSD验证有多昂贵?

C# XML的XSD验证有多昂贵?,c#,xml,xsd,xsd-validation,C#,Xml,Xsd,Xsd Validation,我想通过在C#中使用xsd模式来验证大型xml文件。 对于包含1000行xml代码的文件,验证需要很长时间 有什么技巧和技巧可以更快地验证吗 您能否发布一些使用大型xml验证更快的代码示例 编辑1:我像这样验证 编辑2:对于大文件,需要10秒以上的时间。我需要在一秒钟内快速验证 编辑3:文件大小大于10 Mb 编辑4:我也在考虑这种方法,我想将xml文件存储在数据库中,也存储在xsd中。您当前正在将整个文档加载到内存中,无论验证如何,这都是非常昂贵的。更好的选择是通过读取器进行解析,即。该页示

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

有什么技巧和技巧可以更快地验证吗

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

编辑1:我像这样验证

编辑2:对于大文件,需要10秒以上的时间。我需要在一秒钟内快速验证

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


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

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

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

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


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

文件有多大(字节;“行”是不明确的),当前需要多长时间,以及您当前是如何做的?您提供的答案与此问题的回答类似,我想知道验证是否还能快得多