【问题标题】:How to validate big XML如何验证大 XML
【发布时间】:2015-09-14 15:51:46
【问题描述】:

我正在尝试使用 Nokogiri 针对 XSD 验证 XML 文件。 当文件较小时,我使用文档方法验证:

xsd = Nokogiri::XML::Schema(File.read(Rails.root.join('files/xsd', self::XSD)))
xml = Nokogiri::XML(File.read(Rails.root.join('public/uploads', file_path)))
xsd.validate(xml).each do |error|
end

文件大的时候,前面的方法不好,因为需要很多资源,所以需要文件方法验证:

xsd = Nokogiri::XML::Schema(File.read(Rails.root.join('files/xsd', self::XSD)))
xml = Rails.root.join('public/uploads', file_path).to_s
xsd.validate(xml).each do |error|
end

但是第二种方式并没有向我显示简单的错误,例如属性中未闭合的双引号:

<?xml version="1.0"?>
<catalog version="123 xmlns="http://google.com">
   <book id="bk101">

第一个确实如此。

【问题讨论】:

    标签: ruby-on-rails ruby xml validation nokogiri


    【解决方案1】:

    Nokogiri 是处理中小型 XML 的绝佳工具,但是当您处理大型到超大/巨大的文件时,您需要切换到其他工具,例如 SAX 解析,或者为了验证,使用类似 xmllint 的工具.

    xmllint 程序解析一个或多个 XML 文件,在命令行中指定为 xmlfile。它根据选择的选项打印各种类型的输出。它对于检测 XML 代码和 XML 解析器本身的错误很有用。

    它包含在 libxml2 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2010-12-05
      • 2011-01-26
      相关资源
      最近更新 更多