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
            }

我知道这个块的格式是错误的,但是有没有办法在 ruby​​ 中做类似的事情?

谢谢

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 回答