我需要一些帮助来获取LinkedIn API中这个Nokogiri输出中的一些元素(这是一个Ruby / Nokogiri问题,而不是LinkedIn API问题)
#<LinkedIn::Company:0x00000102c466e0 @doc=[#<Nokogiri::XML::Element:0x94017c5c name="company" children=[#<Nokogiri::XML::Text:0x94017978 "\n ">, #<Nokogiri::XML::Element:0x94017770 name="id" children=[#<Nokogiri::XML::Text:0x940173ec "1234">]>, #<Nokogiri::XML::Text:0x940165c8 "\n ">, #<Nokogiri::XML::Element:0x94016320 name="name" children=[#<Nokogiri::XML::Text:0x94015d30 "Company Foo">]>, #<Nokogiri::XML::Text:0x94015768 "\n ">, #<Nokogiri::XML::Element:0x94015560 name="size" children=[#<Nokogiri::XML::Text:0x94014ffc "501-1000 employees">]>, #<Nokogiri::XML::Text:0x94003770 "\n ">, #<Nokogiri::XML::Element:0x94002438 name="type" children=[#<Nokogiri::XML::Text:0x817f9b7c "Public Company">]>, #<Nokogiri::XML::Text:0x817f95c8 "\n ">, #<Nokogiri::XML::Element:0x817f93e8 name="industry" children=[#<Nokogiri::XML::Text:0x817f91a4 "SomeIndustry">]>, #<Nokogiri::XML::Text:0x817f8f4c "\n ">, #<Nokogiri::XML::Element:0x817f8e48 name="ticker" children=[#<Nokogiri::XML::Text:0x817f8b3c "FOO">]>, #<Nokogiri::XML::Text:0x817f88d0 "\n ">]>]>
我能够轻松获得公司的一些属性 - 这些是company.name,company.type和company.industry,但其他像company.id,company.size和company.ticker都会导致NoMethod错误:
NoMethodError: undefined method `size' for #<LinkedIn::Company:0x00000102c42310>
为什么 - 我可以在对象中看到但无法访问它!我做错了什么?
答案 0 :(得分:2)
我不确定Nokogiri是否可行。我使用直接的LinkedIn :: Mash对象并执行了此操作:
user = client.profile(:fields => %w(positions))
companies = user.positions.all.map{|t| t.company}
companies.each do |company|
#ap company.inspect
#ap "meow\n"
if company.id
ap "ID: #{company.id}"
else
ap "ID not present"
end
if company.industry
ap "Industry: #{company.industry}"
else
ap "Industry not present"
end
if company.name
ap "Name: #{company.name}"
else
ap "Name not present"
end
if company.size
ap "Size: #{company.size}"
else
ap "Size not present"
end
if company.type
ap "Type: #{company.type}"
else
ap "Type not present"
end
if company.ticker
ap "Ticker: #{company.ticker}"
else
ap "Ticker not present"
end
end
属性并不总是存在所以我做了if / else怪异来表明我至少得到了这个对象。无论如何,如果有的话我会得到它们并打印它们。