检查 xml 响应是否具有 type= "array" 使用 Nokogiri?



给定以下使用Nokogiri解析为@response的xml

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

是否存在使@response.xpath(xpath)返回arrayxpath ?

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

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

这个xml是由rails框架自动生成的,这个问题的答案是用来为JSON响应创建一个等价于Cucumber特性的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

根据您的需要,您可能需要:

case doc.root['type']
  when 'array'
    #...
  when 'string'
    #...
  else
    #...
end

相关内容

  • 没有找到相关文章

最新更新