在Groovy中,如何在没有print方法的情况下打印方法city()

时间:2017-01-18 04:06:28

标签: groovy

我正在学习groovy sql。我看到了以下代码:

def sql = Sql.newInstance(...)
def bldr = new MarkupBuilder()
bldr.weather {
  sql.eachRow('select * from weather'){
    city(name:it.city,temperature:it.temperature)
  }
}

数据库表名称为天气,列为:城市 tempertature

当我执行上述脚本时,我的控制台会以XML格式打印天气内容。

令我困惑的是:为什么控制台在没有 print()方法的情况下打印XML。

1 个答案:

答案 0 :(得分:1)

当您在控制台中运行groovy代码时,它默认返回并打印最后执行的语句。例如。如果脚本是:

def l = [1, 2, 3, ]

输出将是:

groovy> def l = [1, 2, 3, ] 

Result: [1, 2, 3]

尽管脚本中没有print语句。

要将生成的XML序列化为文件,您需要一个Writer

的实例
import groovy.xml.MarkupBuilder

def sql =  Sql.newInstance(...)

def writer = new FileWriter('weather.xml')
def bldr = new MarkupBuilder(writer)

bldr.weather {
  sql.each{
    city(name:it.city,temperature:it.temperature)
  }
}