XML生成提供了MarkupBuilder、StreamingMarkupBuilder类
XML操作: MarkupBuilder
MarkupBuilder (): Prints markup to System.out
import groovy.xml.* def xml = new MarkupBuilder() xml.langs("type":currecy){ language("java") language("groovy") language("c++") }
MarkupBuilder (PrintWriter pw): Sends markup to the given PrintWriter
import groovy.xml.* def ps = new StringWriter() def xml = new MarkupBuilder(ps) xml.langs("type":currecy){ language("java") language("groovy") language("c++") } println ps.toString()
XmlParser解析的是xml格式的字符串
import groovy.xml.* def xml = """ <langs type="current"> <language>Java</language> <language>Groovy</language> <language>JavaScript</language> </langs> """ def langs = new XmlParser().parseText(xml) println "type = ${langs.attribute("type")}" langs.language.each{ println it.text() }
xml code
<langs type="current"> <language>Java</language> <language>Groovy</language> <language>JavaScript</language> </langs>
XmlParser进行xml解析
def langs = new XmlParser().parse("languages.xml") println "type = ${langs.attribute("type")}" langs.language.each{ println it.text() }
XML 示例:
<Results> <ResultSet fetchSize="128"> <Row rowNumber="1"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>1</MONTH> <DID>25.4793</DID> </Row> <Row rowNumber="2"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>2</MONTH> <DID>20.6522</DID> </Row> <Row rowNumber="3"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>3</MONTH> <DID>20.6655</DID> </Row> <Row rowNumber="4"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>4</MONTH> <DID>21.9393</DID> </Row> <Row rowNumber="5"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>5</MONTH> <DID>21.9393</DID> </Row> <Row rowNumber="6"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>6</MONTH> <DID>22.2763</DID> </Row> <Row rowNumber="7"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>7</MONTH> <DID>20.9573</DID> </Row> <Row rowNumber="8"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>8</MONTH> <DID>20.9573</DID> </Row> <Row rowNumber="9"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>9</MONTH> <DID>21.2648</DID> </Row> <Row rowNumber="10"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>10</MONTH> <DID>19.7917</DID> </Row> <Row rowNumber="11"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>11</MONTH> <DID>19.7917</DID> </Row> <Row rowNumber="12"> <ID>0000000001</ID> <YEAR>2015</YEAR> <MONTH>12</MONTH> <DID>19.9990</DID> </Row> </ResultSet> </Results>
//Method 1 def node = 'DID' directResult = xml.ResultSet.Row.grep{(it.YEAR.text() == '2015' && it.MONTH.text()== '12')}.getAt(node) //output: [19.990] //Method 2 directResult = xml.ResultSet.Row.find{ if(it.YEAR.text() == '2015' && it.MONTH.text() == '12') return it.getAt(node).text() else return "" }.getAt(node).text() //output: 19.990