Ruby on rails Nokogiri在Rails中使用XPath解析Rackspace返回
我正在使用Nokogiri解析来自Rackspace API的返回 所以我使用他们的示例代码Ruby on rails Nokogiri在Rails中使用XPath解析Rackspace返回,ruby-on-rails,xml,ruby,xpath,nokogiri,Ruby On Rails,Xml,Ruby,Xpath,Nokogiri,我正在使用Nokogiri解析来自Rackspace API的返回 所以我使用他们的示例代码 response = server.get '/customers/'+@user.customer_id.to_s+'/domains/', server.xml_format doc = Nokogiri::XML::parse response.body puts "xpath values" doc.xpath("//name").each do |node| pu
response = server.get '/customers/'+@user.customer_id.to_s+'/domains/', server.xml_format
doc = Nokogiri::XML::parse response.body
puts "xpath values"
doc.xpath("//name").each do |node|
puts
node.text
end
作为我的代码,使用Nokogiri返回元素的节点列表
出于某种原因,我似乎错过了一些显而易见的东西,我无法让它解析节点列表并返回给我,我能做些简单的事情来修复它,让它返回节点列表吗
下面是我试图解析的XML的一个示例:
<domainList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:xml:domainList">
<offset>0</offset>
<size>50</size>
<total>4</total>
<domains>
<domain>
<name>domain1.com</name>
<accountNumber>xxxxxxx</accountNumber>
<serviceType>exchange</serviceType>
</domain>
<domain>
<name>domain2.com</name>
<accountNumber>xxxxxxx</accountNumber>
<serviceType>exchange</serviceType>
</domain>
<domain>
<name>domain3.com</name>
<accountNumber>xxxxxxx</accountNumber>
<serviceType>exchange</serviceType>
</domain>
</domains>
</domainList>
0
50
4.
域名1.com
xxxxxxx
交换
域名2.com
xxxxxxx
交换
域名3.com
xxxxxxx
交换
干杯问题似乎是你必须告诉Nokogiri他们的名称空间
doc.xpath("//blarg:name", {'blarg' => 'urn:xml:domainList'}).each do |name|
puts name.text
end
如果删除xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“xmlns:xsd=”http://www.w3.org/2001/XMLSchema“xmlns=”urn:xml:domainList“
从您的domainList标记可以看到您的查询工作
否则,您需要告诉Nokogiri这个名称空间
doc.xpath("//blarg:name", {'blarg' => 'urn:xml:domainList'}).each do |name|
puts name.text
end
Nokogiri xpath接受第二个参数,它是名称空间的散列。您拥有的xml定义了一个通用名称空间,但没有给它一个标记。我不知道nokogiri是否有办法找到这个,所以在搜索时,只需给搜索一个任意标记,并将名称空间路径与该标记关联。您可以放置任何您想要的文本,而不是blarg,这只是一个示例。您可以发布一个响应变量中存在的xml数据示例吗?我已经添加了一个我试图解析的xml类型示例。您绝对是一个救命恩人,谢谢!