我正在使用API,想知道如何根据标签轻松搜索和显示/格式化输出。
例如,以下是包含API的页面和XML OUtput的示例:
http://developer.linkedin.com/docs/DOC-1191
我希望能够将每条记录视为一个对象,例如User.first-name User.last-name,以便我可以显示和存储信息,并进行搜索。
是否有宝石可以让这更容易?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<people-search>
<people total="108" count="10" start="0">
<person>
<id>tePXJ3SX1o</id>
<first-name>Bill</first-name>
<last-name>Doe</last-name>
<headline>Marketing Professional and Matchmaker</headline>
<picture-url>http://media.linkedin.com:/....</picture-url>
</person>
<person>
<id>pcfBxmL_Vv</id>
<first-name>Ed</first-name>
<last-name>Harris</last-name>
<headline>Chief Executive Officer</headline>
</person>
...
</people>
<num-results>108</num-results>
</people-search>
答案 0 :(得分:4)
这可能会给你一个快速启动:
#!/usr/bin/env ruby require 'nokogiri' XML = %{<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <people-search> <people total="108" count="10" start="0"> <person> <id>tePXJ3SX1o</id> <first-name>Bill</first-name> <last-name>Doe</last-name> <headline>Marketing Professional and Matchmaker</headline> <picture-url>http://media.linkedin.com:/foo.png</picture-url> </person> <person> <id>pcfBxmL_Vv</id> <first-name>Ed</first-name> <last-name>Harris</last-name> <headline>Chief Executive Officer</headline> </person> </people> <num-results>108</num-results> </people-search>} doc = Nokogiri::XML(XML) doc.search('//person').each do |person| firstname = person.at('first-name').text puts "firstname: #{firstname}" end # >> firstname: Bill # >> firstname: Ed
这个想法是你在这个案例中循环重复的部分“人”。然后,您选择所需的部分并提取文本。我正在使用Nokogiri的.at()来获得第一次出现,但还有其他方法可以做到。
Nokogiri网站有很好的例子和精心编写的文档,所以一定要花些时间来讨论它。你会发现它很容易。
答案 1 :(得分:1)
nokogiri是一个非常好的ruby xml解析器,它允许你使用xpath或css3选择器来访问你的xml,但它不是xml到对象映射器
有一个名为xml-mapping的项目通过定义应映射到对象属性的xpath表达式来完成此操作 - 反之亦然。
答案 2 :(得分:1)
This is how我使用内置的REXML为Ruby Challenge做过。
这基本上是整个文档的解析代码:
doc = REXML::Document.new File.new cia_file
doc.elements.each('cia/continent') { |e| @continents.push Continent.new(e) }
doc.elements.each('cia/country') { |e| @countries.push Country.new(self, e) }
答案 3 :(得分:0)
http://nokogiri.org/是您应该调查的选项