Ruby 检查xml响应是否具有type=";数组";使用Nokogiri?

Ruby 检查xml响应是否具有type=";数组";使用Nokogiri?,ruby,ruby-on-rails-3,xpath,nokogiri,Ruby,Ruby On Rails 3,Xpath,Nokogiri,给定已解析为@response 1. 酒吧 是否存在xpath使得@response.xpath(xpath)返回array 假设在foo的命名不一致的多个文档中必须重用此xpath 如果xpath不是解决此问题的正确工具,Nokogiri是否提供了一种正确的方法 此xml由rails框架自动生成,此问题的答案旨在用于创建相当于的xml。如果要在根节点的type属性为array时选择根节点(无论根元素的名称如何),请使用以下命令: /*[@type='array'] 对于其子对象,请使用:

给定已解析为
@response


1.
酒吧
是否存在
xpath
使得
@response.xpath(xpath)
返回
array

假设在foo的命名不一致的多个文档中必须重用此xpath

如果xpath不是解决此问题的正确工具,Nokogiri是否提供了一种正确的方法


此xml由rails框架自动生成,此问题的答案旨在用于创建相当于的xml。

如果要在根节点的
type
属性为
array
时选择根节点(无论根元素的名称如何),请使用以下命令:

/*[@type='array']
对于其子对象,请使用:

/*[@type='array']/*
简单地说:

if doc.root['type']=='array'
下面是一个测试用例:

@response = <<ENDXML
<?xml version="1.0" encoding="UTF-8"?>
<foos type="array">
  <foo>
    <id type="integer">1</id>
    <name>bar</name>
  </foo>
</foos>
ENDXML

require 'nokogiri'
doc = Nokogiri.XML(@response)
if doc.root['type']=='array'
  puts "It is!"
else
  puts "Nope"
end
@response = <<ENDXML
<?xml version="1.0" encoding="UTF-8"?>
<foos type="array">
  <foo>
    <id type="integer">1</id>
    <name>bar</name>
  </foo>
</foos>
ENDXML

require 'nokogiri'
doc = Nokogiri.XML(@response)
if doc.root['type']=='array'
  puts "It is!"
else
  puts "Nope"
end
case doc.root['type']
  when 'array'
    #...
  when 'string'
    #...
  else
    #...
end