实战 Groovy: 用 Groovy 生成器作标记
2009-11-19 00:00:00 来源:WEB开发网让我们逐步来了解这一过程。首先,创建一个生成器实例,在本例中是 MarkupBuilder,因为您想要生成 XML。最外面的 XML 元素(也就是“根”)是 words,这样就创建了一个 words 方法。在闭包里,调用第一个查询,并在迭代中将查询结果映射到 word 子节点。
接着,通过两个新的查询,创建 word 的两个子节点。创建一个 definitions 对象,并在迭代中映射它,接着用同样的方法处理 synonyms。
清单 7. 用生成器集合所有元素import groovy.sql.Sql
import groovy.xml.MarkupBuilder
import java.io.File
import java.io.StringWriter
class WordsDbReader{
static void main(args) {
sql = Sql.newInstance("jdbc:mysql://localhost/words",
"words", "words", "org.gjt.mm.mysql.Driver")
writer = new StringWriter()
builder = new MarkupBuilder(writer)
builder.words() {
sql.eachRow("select word_id, spelling, part_of_speech from word"){ row |
builder.word(spelling:row.spelling, partofspeech:row.part_of_speech){
builder.definitions(){
sql.eachRow("select definition from definition where word_id = ${row.word_id}"){ defrow |
builder.definition(defrow.definition)
}
}
builder.synonyms(){
sql.eachRow("select spelling from synonym where word_id = ${row.word_id}"){ synrow |
builder.synonym(synrow.spelling)
}
}
}
}
}
new File("dbouuput.xml").withPrintWriter{ pwriter |
pwriter.println writer.toString()
}
}
}
结束语
这里,我向您展示的绑定解决方案似乎简单得让人难以置信,特别是以 Java 纯化论者的观点看来更是如此。尽管该解决方案不比使用绑定框架(如 JABX 和 JiBX) 更好,但它确实更快一些 —— 而且,我主张使用这样较简单的方法。是不是我在简单的 Java 代码中做一些类似的事情?是的,但我敢肯定,某些时候我也不得不处理 XML。
用 Groovy 生成器进行开发的速度和简易性,在调用标记的时候可大显神威。例如,就像在第二个例子里展示的那样,我可以马上加快数据库的 XML 表示。对于原型化,或者当需要以最少的开发时间和精力来产生可工作的解决方案时,生成器也是一个不错的选择。
在下个月的实战 Groovy 中我会讲些什么呢?哦,当然是在 Java 语言中使用 Groovy!
- ››Groovy轻松入门
- ››实战:企业使用交换机VLAN路由配置
- ››实战案例分析:高质量软文对网站百度排名的影响
- ››实战经验浅谈网站搬家后的优化工作
- ››实战Active Directory站点部署与管理,Active Dir...
- ››实战操作主机角色转移,Active Directory系列之十...
- ››实战经验:巧用微博推广淘宝网店
- ››实战iPhone GPS定位系统
- ››实战Linux环境配置DBD:Oracle模块
- ››实战DeviceIoControl系列之一:通过API访问设备驱...
- ››实战DeviceIoControl系列之二:获取软盘/硬盘/光盘...
- ››实战DeviceIoControl系列之三:制作磁盘镜像文件
更多精彩
赞助商链接