首页 > 学院 > 开发设计 > 正文

Groovy的XML解析和构建

2019-11-08 03:12:59
字体:
来源:转载
供稿:网友

Groovy xml解析和构建

1、XmlParser解析XML。可以解析xml文件,也可以解析字符串。
def persons = new XmlParser().parse("persons.xml")或者
xmlStr = """<persons>	<person name="Mike" address="ShangHai">		<phone>131111111</phone>		<phone>131222222</phone>	</person>	<person name="Lily" address="BeiJing">		<phone>132111111</phone>		<phone>132222222</phone>	</person>	<person name="Jack" address="ShenZheng">		<phone>133111111</phone>		<phone>133222222</phone>	</person></persons>"""def persons = new XmlParser().parseText(xmlStr)XmlParser直接使用节点名称来访问,通过@+属性名来访问节点属性值,使用text方法来访问内容值。
PRintln persons.person.@name // [Mike, Lily, Jack]println persons.person[1].@name // Lilyprintln persons.person[0].phone.collect{it.text()} // [131111111, 131222222]2、XmlSlurper解析XML。XmlSlurper的用法和XmlParser的调用相似。
def persons = new XmlSlurper().parseText(xmlStr)println persons.person.@name // [Mike, Lily, Jack]println persons.person[1].@name // Lilyprintln persons.person[0].phone.collect{it.text()} // [131111111, 131222222]命名空间
xmlStr = """<persons xmlns:app="app">    <app:person name="Mike" address="ShangHai">        <phone>131111111</phone>        <phone>131222222</phone>    </app:person>    <person name="Lily" address="BeiJing">         <phone>132111111</phone>        <phone>132222222</phone>    </person>    <app:person name="Jack" address="ShenZheng">        <phone>133111111</phone>        <phone>133222222</phone>    </app:person></persons>"""def persons = new XmlSlurper().parseText(xmlStr).declareNamespace(x:'app')println persons.person[1].@name // Lilyprintln persons.'x:person'[1].@name // Jack3、MarkupBuilder构建适合中小型文档。
writer = new StringWriter()mb = new groovy.xml.MarkupBuilder(writer)mb.persons {	person(name:"Mike", address:"ShangHai") {		phone(131111111)		phone(131222222)	}	person(name:"Lily", address:"BeiJing") {		phone(132111111)		phone(132222222)	}	person(name:"Jack", address:"ShengZhen") {		phone(133111111)		phone(133222222)	}}println writer返回
<persons>	<person name='Mike' address='ShangHai'>		<phone>131111111</phone>		<phone>131222222</phone>	</person>	<person name='Lily' address='BeiJing'>		<phone>132111111</phone>		<phone>132222222</phone>	</person>	<person name='Jack' address='ShengZhen'>		<phone>133111111</phone>		<phone>133222222</phone>	</person></persons>4、StreamingMarkupBuilder构建适合大型文档。
xmlDoc = new groovy.xml.StreamingMarkupBuilder().bind {	mkp.xmlDeclaration() // <?xml version='1.0'?>	mkp.declareNamespace(app:"APP") // 命名空间	persons {		comment << "Just comment" // 注释		app.person(name:"Mike", address:"ShangHai") {			phone(131111111)			phone(131222222)		}		app.person(name:"Lily", address:"BeiJing") {			phone(132111111)			phone(132222222)		}		person(name:"Jack", address:"ShengZhen") {			phone(133111111)			phone(133222222)		}	}}println xmlDoc返回
<?xml version='1.0'?><persons xmlns:app='APP'>	<!--Just comment-->	<app:person name='Mike' address='ShangHai'>		<phone>131111111</phone>		<phone>131222222</phone>	</app:person>	<app:person name='Lily' address='BeiJing'>		<phone>132111111</phone>		<phone>132222222</phone>	</app:person>	<person name='Jack' address='ShengZhen'>		<phone>133111111</phone>		<phone>133222222</phone>	</person></persons>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表