我正在尝试针对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 Validation cheatsheet,所以我找到了读取该行的选项。
在libxml2文档中,我发现我必须启用行号才能设置它。知道如何使用Nokogiri启用行号或在验证错误中获取行号吗?
答案 0 :(得分:3)
我只需要稍微改写一下,而不是预先加载和解析整个xml,我只需要验证文件本身。像这样:
xsd = Nokogiri::XML::Schema(File.read('batch_schema.xsd'))
xsd.validate('batch205.xml').each do |error|
puts "#{error.line} :: #{error.message}"
end