1

mysqlデータベースから作成した4つのXMLファイルを評価しようとしています。これらのXMLフィールドのテキストをデータのペアとして出力して、ハッシュを作成できるようにします。(例: "Total Builds、359")ブロックの使用方法が原因で、構文エラーが発生していると確信しています。

これが私がやろうとしていることです:

  while i < numberOfFiles do
            #create a document
            doc = Document.new(File.new(filenames[i]))
            doc.elements.each("//row/field")
            {
             |e|  ##Syntax error here
             name = e.attributes['name']
             text = e.text
             if name == "Total Builds"
                    puts name + ", " + text
             elsif name == "Successful Builds"
                    puts name + ", " + text
             elsif name == "Failed Builds"
                    puts name + ", " + text
             else
                    puts text.join(",")
             end
            }

このブロックのフォーマットが間違っていることは知っていますが、ルビーでこれに似た何かをする方法はありますか?

ありがとう

4

1 に答える 1

1

なぜ構文エラーが発生するのかわかりませんがdo end、中かっこを混ぜています。少なくともそのような長いブロックでは、そうしないことをお勧めします。

次のようなものを試してください

doc.elements.each("//row/field") do |element|
  name = element.attributes['name']
  text = element.text
  builds = ["Total Builds", "Successful Builds", "Failed Builds"]
  if builds.include?(name)
    puts name + ", " + text
  else
    puts text.join(",")
  end
end

また、whileそのようなステートメントは、Rubyで通常行われる方法ではありません。多くの場合、次のようなものです。

filenames.each do |filename|
  doc = Document.new(File.new(filename))
于 2011-06-29T14:03:34.813 に答える