用Nokogiri阅读XML的问题

Pau*_*aul 4 ruby xml nokogiri

我的Ruby脚本应该从URL读取XML文档并检查它是否格式良好,并返回任何错误.我有一个使用以下文本托管的示例坏XML文档(来自Nokogiri教程:

<?xml version="1.0"?>
  <root>
    <open>foo
      <closed>bar</closed>
  </root>
Run Code Online (Sandbox Code Playgroud)

我的测试脚本如下(url引用我个人服务器上托管的上述xml文件):

require 'nokogiri'

document = Nokogiri::XML(url) 

puts document
puts document.errors
Run Code Online (Sandbox Code Playgroud)

输出是:

<?xml version="1.0"?>
Start tag expected, '<' not found
Run Code Online (Sandbox Code Playgroud)

为什么它只捕获XML文件的第一行?即使使用已知良好的XML文件,它也能做到这一点.

Ser*_*abe 5

它试图解析网址,而不是其内容.请考虑到第一个参数Nokogiri::XML必须是包含文档或字符串IO对象,因为它只是一个快捷方式Nokogiri::XML::Document.parse作为说明这里.

编辑:从uri阅读

require 'open-uri'
open(uri).read
Run Code Online (Sandbox Code Playgroud)