使用Nokogiri读取XML时出现问题



我的Ruby脚本应该从URL读取XML文档并检查其格式是否良好,如果有错误则返回。我有一个带有以下文本(来自Nokogiri教程)的示例坏XML文档:

<?xml version="1.0"?>
  <root>
    <open>foo
      <closed>bar</closed>
  </root>

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

require 'nokogiri'
document = Nokogiri::XML(url) 
puts document
puts document.errors

输出为:

<?xml version="1.0"?>
Start tag expected, '<' not found

为什么它只捕获XML文件的第一行?它甚至对已知的好的XML文件也这样做。

正在尝试解析url,而不是其内容。请注意,Nokogiri::XML的第一个参数必须是包含文档或IO对象的字符串,因为它只是这里所述的Nokogiri::XML::Document.parse的快捷方式。

EDIT:用于读取uri

require 'open-uri'
open(uri).read

我不太确定您使用什么代码来实际输出XML的内容。我只看到错误打印代码。但是,我在下面发布了一些示例代码,可以有效地使用Nokogiri在XML中移动:

<item>
  Something
</item> 
<item>
  Else
</item>
doc = Nokogiri::XML(open(url))
set = doc.xpath('//item')
set.each {|item| puts item.to_s}
  #=> Something
  #=> Else

如果您已经从Nokogiri xml中获得xml,那么请确保使用'。

例如,

xml = Nokogiri:: xml (existing_nokogiri_xml_doc.to_s)

相关内容

  • 没有找到相关文章

最新更新