2016-05-04 24 views
0

私はXMLを解析するアプリケーションを書いています。私は1つのXMLファイルからデータを取得しなければならず、ループの中で別のXMLファイルを開く必要があります。複数のXMLファイルをダウンロード

コードは次のようになります。

$doc = Nokogiri::XML(open('myxmladress')) 
$doc.xpath('//job').each do |job| 
    if job.xpath('name').text.include?('joe') 
    $doc2 = Nokogiri::XML(open('myxmladress_for_joe')) 
    end 
end 

私はオープン、複数のHTTP接続を持つことができないと信じています。

私は単純に代わり

$doc Nokogiri::XML(open('myxmladress')) 

を使用してのファイル全体をダウンロードするか、鋸山HTTP接続を閉じるにはどのような方法がありますができますか?

さらに詳しい情報はhttpsでダウンロードしています。

マイエラー:

in `open_http': 500 Server Error (OpenURI::HTTPError) 
from /home/nagios/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:737:in `buffer_open' 
from /home/nagios/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:212:in `block in open_loop' 
from /home/nagios/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:210:in `catch' 
from /home/nagios/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:210:in `open_loop' 
from /home/nagios/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:151:in `open_uri' 
from /home/nagios/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:717:in `open' 
from /home/nagios/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:35:in `open' 
from jenkins_auth.rb:97:in `block (2 levels) in combine_partial_results' 
from /home/nagios/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:187:in `block in each' 
from /home/nagios/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:186:in `upto' 
from /home/nagios/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:186:in `each' 
from jenkins_auth.rb:89:in `block in combine_partial_results' 
from /home/nagios/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:187:in `block in each' 
from /home/nagios/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:186:in `upto' 
from /home/nagios/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:186:in `each' 
from jenkins_auth.rb:86:in `combine_partial_results' 
from jenkins_auth.rb:130:in `get_tests_for_job' 
from jenkins_auth.rb:137:in `<main>' 
+0

私は確信していませんが、Nokogiriはその中の複数のHTTP接続のこのような処理を行い、これについて気にする必要はありません。あなたのコードは実行されていますか?そうでない場合、エラーメッセージは何ですか? –

+0

エラーはサーバー側にあります:500エラーコードは、サーバーに内部エラーがあることを意味します。 – jphager2

+0

だから、すべてを集計するには、問題はおそらくサーバであり、上のコードに示されているように私の方法はmjoreかそれほど正確ではありませんか? –

答えて

0

あなたはURLからドキュメントを取得するためにOpenUriを使用しています。私はこれがオープンな接続を残していないと確信していますが、ファイルのような種類のIOオブジェクトにドキュメントを読み込みます。

問題は、サーバーに内部エラーがあったようです。

+1

OpenURIは、覚えていればStringIOオブジェクトを返します。 –

関連する問題