【发布时间】:2013-03-21 10:11:03
【问题描述】:
我试图弄清楚如何通过 api 调用解析返回的 XMl,我正在使用 Nokogiri 并正在尝试使用 xpath。我想做的是显示所有已返回的“标题”属性
到目前为止我有一个方法
def getcontact
doc = Nokogiri::XML(open(url))
doc.xpath('//xmlns:feed/xmlns:entry')
end
控制器
@mycontacts = getcontact
查看
<% @mycontacts.each do |c| %>
<%= c.xpath("//title") %>
<% end %>
XML
<entry>
<id>xxx</id>
<updated>xxx</updated>
<category scheme="xxx" term="xxx"/>
<title type="text">xxx</title>
<link rel="xxx" type="xxx" href="xxx"/>
<link rel="xxx0gmail.com/b6ea0e8ddbc4e5"/>
<link rel="xx" type="xxx" href="xxx"/> <link rel="xx" type="axx" href="xxx"/>
<gd:email rel="xxx" address="xxx" primary="xx"/>
</entry>
我没有得到任何返回,请有人指出我做错了什么,我还注意到返回的 XML 中有 html 标签,我可以把它去掉吗,例如 type=text 在标题属性中
更新
所以我试过了
doc.xpath('//xmlns:feed/xmlns:entry/xmlns:title').text
但这会将所有标题作为字符串返回
更新 2
查看
<% @mycontacts.each do |c| %>
<%= c.xpath('xmlns:title').text %><br>
<% end %>
方法
doc.xpath('//xmlns:feed/xmlns:entry')
所以这列出了我所有的标题,但如果有任何空白条目,则有一个空记录。我猜现在需要从循环中删除这些
这是正确的,有没有更好的方法?
谢谢
【问题讨论】:
-
我认为您缺少正确的 xpath 表达式。这个问题可能会有所帮助:stackoverflow.com/questions/3573643/….
-
嗯,我将如何在我的设置中实现这一点?任何帮助表示赞赏
标签: ruby ruby-on-rails-3 xml-parsing nokogiri