groovy 处理xml

/* sample.xml 文件内容
<langs type="current">
  <language>Java</language>
  <language>Groovy</language>
  <language>JavaScript</language>
</langs>
*/
xml = new XmlParser().parse("sample.xml")
//groovy.util.XmlParser , groovy默认导入包groovy.util
println "${xml.attribute('type')}"
//获取node的属性
xml.language.each {
	println it.text()
}
//直接遍历子节点,太方便了;不过,为了增强可读性,还是低调一点,用下标的方式吧:
xml["language"].each {
	println it.text()
}
//可以用三重引号,把xml文件的内容放到一个字符串中
xml_content=
"""
<langs type="current">
  <language>Java</language>
  <language>Groovy</language>
  <language>JavaScript</language>
</langs>
"""
xml=new XmlParser().parseText(xml_content)
xml.language.eachWithIndex {
  it,idx->
  println "$idx: ${it.text()}"
}
//创建一个xml文件
def content=new StringWriter()
def xml = new groovy.xml.MarkupBuilder(content)
//将xml的内容写到content中
xml.langs(type:'current',level:'advanced'){
	language(verison:1.6,state:'stable',"Java")
	language(verison:1.84,state:'test',"groovy"){
		language('version':1.37,state:'GA','Gails')
	}
	def langs=[["ver":1.4,'state':'beta','name':'GO']]
	langs.each{
		language(version:it.ver,state:it.state,it.name)
	}
}
println content

//使用StreamingMarkupBuilder创建xml
def comment="<![CDATA[<!-- address is new to this --> ]]>"
def builder=new groovy.xml.StreamingMarkupBuilder()
builder.encoding='utf-8'
def person = {
	mkp.xmlDeclaration()
	mkp.pi('xml-stylesheet':"type='text/xsl' href='myfile.xslt'")
	mkp.declareNamespace('':"http://namespace")
	mkp.declareNamespace('location':"http://namespace")
	person(id:100){
		firstname('bob')
		lastname('james')
		mkp.yieldUnescaped(comment)
		location.address('123 main')
	}
	
}
def writer = new StringWriter()
writer << builder.bind(person)
println writer
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值