Ошибка синтаксиса Ruby XML - PullRequest
1 голос
/ 29 июня 2011

Я пытаюсь оценить 4 файла XML, которые я создаю из базы данных mysql, я хочу вывести текст этого поля XML в виде пары данных, чтобы я мог создать хеш.(Пример: «Всего построений, 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
            }

Я знаю, что формат этого блока неправильный, но есть ли способ сделать что-то подобное в ruby?

Спасибо

1 Ответ

1 голос
/ 29 июня 2011

Я не понимаю, почему это вызвало бы синтаксическую ошибку, но вы смешиваете 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 такие заявления не такие, как это обычно делается вРубин.Часто это что-то вроде:

filenames.each do |filename|
  doc = Document.new(File.new(filename))
...