`
快乐的牛
  • 浏览: 73785 次
社区版块
存档分类
最新评论

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
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics