groovy解析xml

XML解析提供了XmlParser、XmlSlurper

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值