2012-03-03 6 views
0

私はこのスクリプトをより大きなものにしました。ルビーのコントロールフローをより良く処理し、オブジェクトを無制限に処理するには

:私は今持っているスクリプトはオブジェクトnilの出力、

を私はお互いにlitle切り抜いに見える木切り抜いたXMLファイルを持っていると私はより良いnilのオブジェクトおよびXPath式を処理するための制御構造のいくつかのタイプを必要とします

require 'open-uri' 
require 'rexml/document' 
include REXML 

@urls = Array.new() 
@urls << "http://testnavet.skolverket.se/SusaNavExport/EmilObjectExporter?id=186956355&amp;strId=info.uh.kau.KTADY1&amp;EMILVersion=1.1" 
@urls << "http://testnavet.skolverket.se/SusaNavExport/EmilObjectExporter?id=184594606&amp;strId=info.uh.gu.GS5&amp;EMILVersion=1.1" 
@urls << "http://testnavet.skolverket.se/SusaNavExport/EmilObjectExporter?id=185978100&amp;strId=info.uh.su.ARO720&amp;EMILVersion=1.1" 

@urls.each do |url| 
    doc = REXML::Document.new(open(url).read) 
    doc.elements.each("/educationInfo/extensionInfo/nya:textualDescription/nya:textualDescriptionPhrase | /ns:educationInfo/ns:extensionInfo/gu:guInfoExtensions/gu:guSubject/gu:descriptions/gu:description | //*[name()='ct:text']"){ 
     |e| m = e.text 
     m.gsub!(/<.+?>/, "") 
     puts "Description: " + m 
     puts "" 
    } 
end 

OUTPUT:

説明:、、kalandrering、bestrykning tryckning kemiteknik

説明:VILLデュjobba MED internationella OCH globalafrågor私d ... 説明:今日の世界と学校の理解のために、グローバリゼーションの研究がますます増えています グローバルスタディは研究のためのユニークな環境です。

説明:

説明:

説明:Kursen behandlar identifieringen OCH beskrivningen AV sjukligaförändringar私mänskligaskelett。使用可能な文字数は です。 モダンクリスマスデータディスクテスタまでのスケルトンフォールディングストリングの数です。

+1

ヒント:「puts」説明:「+ m」は「puts」としてよく書かれます。説明:#{m} "'、IMO。また、 'puts" "'は 'puts'と同じです。また、 'foo = Array.new'の代わりに' foo = [] 'だけでもできます([この質問]を参照してください(http://stackoverflow.com/questions/4601652/ruby-array-creation-array-new-vs )それについてはもっと詳しく)。 –

+0

@Andrew:ありがとう。 – SHUMAcupcake

答えて

1

ruby​​でブロックを使用するときにエントリをスキップする方法については、this postを参照してください。 doc.elementsのeach()メソッドは、ブロック(gsubとputsの呼び出しを含むコード)で呼び出されています。 "next"キーワードは、現在の要素のブロックの実行を停止させ、次の要素に移ります。

"次の"キーワードを使用した場合、 "m"は文字列であり、ゼロではありません。その行を実行するとエラーが発生しませんでした。つまり、空白の説明は、空の文字列で、nilオブジェクトではありません。

+0

恐ろしい仲間ですが、正規表現はXMLファイルからすべてのhtmlタグを取り除きます。 – SHUMAcupcake

関連する問題