我正在尝试根据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