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>
新聞熱點
疑難解答