使用 Nokogiri 验证 XML:查找验证错误的行 nr



我正在尝试根据XSD模式验证相当大的XML文件。Nokogiri 使用以下代码可以完美地做到这一点:

  xsd = Nokogiri::XML::Schema(File.read('batch_schema.xsd'))
  doc = Nokogiri::XML(File.read('batch205.xml'))
  xsd.validate(doc).each do |error|
    puts "#{error.line} :: #{error.message}"
  end

足够简单。仅:error.line始终为 65535。因为我们需要检查的XML文件非常大,所以获取行号会非常非常有帮助。

我找到了这个XSD验证备忘单,所以我找到了阅读该行的选项。

在 libxml2 文档中,我发现我必须启用行号才能设置它。知道如何使用 Nokogiri 启用行号或在验证错误中获取行号吗?

我只需要以稍微不同的方式编写它,而不是预先加载和解析整个 xml,我只需要验证文件本身。这样:

xsd = Nokogiri::XML::Schema(File.read('batch_schema.xsd'))
xsd.validate('batch205.xml').each do |error|
  puts "#{error.line} :: #{error.message}"
end

相关内容

  • 没有找到相关文章

最新更新