上一篇介绍了如何使用Groovy解析xml文件,本文再介绍如何生成xml文件。与解析xml一样,Groovy也提供了两种方式MarkupBuilder和StreamingMarkupBuilder。一般而言StreamingMarkupBuilder更专业,功能更全。他们的区别有点类似于DOM和SAX, 也就说处理较大的xml文件,StreamingMarkupBuilder性能更好, 不过一般情况下,区别不大。 下面我们以MarkupBuilder为例。
import groovy.xml.MarkupBuilder
class XmlWriter {
public static main(def args){
def strXml = new StringWriter()
MarkupBuilder mb = new groovy.xml.MarkupBuilder(strXml);
//mb.'?xml'(version:"1.0",encoding:"UTF-8")
mb.interview{
data{
person(id:"05891",comments:"social recruitment"){
title{
position(code:"P7","Staff SE")
}
age("29")
assessment(interviewer:"manager1","tech is ok")
experience{
phase(from:"2012",to:"Now","CompanyA")
phase(from:"2010",to:"2012","CompanyB")
}
}
person(id:"05892",comments:"campus recruitment"){
title{
position(code:"P6","SE")
}
age("25")
assessment(interviewer:"manager2","UniversityA")
phase(from:"2011","CompanyB")
}
}
}
interviewInfo{
date("2016-10-12")
address("meetingroom 402")
organizator(dept:"cloud","ZhangSan")
}
}
print strXml
def xmlFile = "output.xml"
PrintWriter pw = new PrintWriter(xmlFile)
pw.write(strXml.toString())
pw.close()
}
}
<interview>
<data>
<person id='05891' comments='social recruitment'>
<title>
<position code='P7'>Staff SE</position>
</title>
<age>29</age>
<assessment interviewer='manager1'>tech is ok</assessment>
<experience>
<phase from='2012' to='Now'>CompanyA</phase>
<phase from='2010' to='2012'>CompanyB</phase>
</experience>
</person>
<person id='05892' comments='campus recruitment'>
<title>
<position code='P6'>SE</position>
</title>
<age>25</age>
<assessment interviewer='manager2'>tech is ok</assessment>
<experience>
<phase from='2012' to='Now'>UniversityA</phase>
<phase from='2011' to='2012'>CompanyB</phase>
</experience>
</person>
</data>
<interviewInfo>
<date>2016-10-12</date>
<address>meetingroom 402</address>
<organizator dept='cloud'>ZhangSan</organizator>
</interviewInfo>
</interview>
运行截图
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。