2014-10-08 1 views
0

У меня есть этот XMLКак режим nokogiri slop обрабатывает разделяемые элементы штриховки?

<league xmlns="http://feed.elasticstats.com/schema/basketball/schedule-v2.0.xsd" id="4353138d-4c22-4396-95d8-5f587d2df25c" name="NBA" alias="NBA"> 
    <season-schedule id="eb322501-7291-457b-9bbb-b4106ecf9564" year="2014" type="PRE"> 
    <games> 
... 

Как я могу получить доступ к содержимому «сезона-графика»

До сих пор я пытался это без какого-либо успеха:

doc2.html.body.league.seasonschedule 
NoMethodError: undefined method `seasonschedule' for #<Nokogiri::XML::Element:0x007faddf5ce2b8> 
from /Users/boti/.rvm/gems/[email protected]/gems/nokogiri-1.6.3.1/lib/nokogiri/decorators/slop.rb:30:in `method_missing' 
[13] pry(main)> doc2.html.body.league.season_schedule 
NoMethodError: undefined method `season_schedule' for #<Nokogiri::XML::Element:0x007faddf5ce2b8> 
from /Users/boti/.rvm/gems/[email protected]/gems/nokogiri-1.6.3.1/lib/nokogiri/decorators/slop.rb:30:in `method_missing' 

ответ

1

К сожалению, кажется, там не лучше, чем:

doc2.html.body.league.send('season-schedule') 

Также, пожалуйста, прочитайте com к секции наклона в Nokogiri docs. Это

  1. Не используйте это.
  2. Это может быть или не быть отступным комплиментом.
  3. Нет, действительно, не используйте это. Если вы его используете, не сообщайте об ошибках.
  4. Вы были предупреждены!
+1

': сезон schedule' не будет работать, вам нужно': "сезон-график" 'или просто' «сезонный график», чтобы избежать '-', интерпретируемого как минус. – matt

+0

@matt - Естественно, спасибо за исправление. – BroiSatse

1

Я не уверен, что проблема есть, так как это работает:

require 'nokogiri' 

doc = Nokogiri::HTML(<<EOT) 
<league xmlns="http://feed.elasticstats.com/schema/basketball/schedule-v2.0.xsd" id="4353138d-4c22-4396-95d8-5f587d2df25c" name="NBA" alias="NBA"> 
    <season-schedule id="eb322501-7291-457b-9bbb-b4106ecf9564" year="2014" type="PRE"> 
    <games/> 
    </season-schedule> 
</league> 
EOT 

doc.at('season-schedule') # => #<Nokogiri::XML::Element:0x3fefd20679d8 name="season-schedule" attributes=[#<Nokogiri::XML::Attr:0x3fefd20678e8 name="id" value="eb322501-7291-457b-9bbb-b4106ecf9564">, #<Nokogiri::XML::Attr:0x3fefd20678d4 name="year" value="2014">, #<Nokogiri::XML::Attr:0x3fefd20678c0 name="type" value="PRE">] children=[#<Nokogiri::XML::Text:0x3fefd2067014 "\n ">, #<Nokogiri::XML::Element:0x3fefd2066f60 name="games">, #<Nokogiri::XML::Text:0x3fefd2066d94 "\n ">]> 
doc.at('season-schedule')['id'] # => "eb322501-7291-457b-9bbb-b4106ecf9564" 
Смежные вопросы