/* 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
groovy 处理xml
最新推荐文章于 2024-01-10 13:53:16 发布