Groovy 生成xml文件(使用MarkupBuilder)

7 篇文章 2 订阅
上一篇介绍了如何使用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", "tech is ok")
                    experience{
                        phase(from:"2012", to:"now", "UniversityA")
                        phase(from:"2011", to:"2012", "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()

    }
}

生成的xml文件

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

运行截图
这里写图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值