【问题标题】:Ruby XML syntax errorRuby XML 语法错误
【发布时间】:2011-06-29 13:59:14
【问题描述】:

我正在尝试评估从 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中做类似的事情?

谢谢

【问题讨论】:

    标签: ruby xml rexml


    【解决方案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))
    

    【讨论】:

    • 那一定是 cygwin 的复制问题,因为我的屏幕上有两个括号
    • 感谢您的帮助,看起来很棒
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多