一、JSON

  1. def list=[new Personal(name:'john',age:25), new Personal(name:'major',age:26)]
  2. def json=JsonOutput.toJson(list)
  3. def jsonSlurper=new JsonSlurper()
  4. def beanList=jsonSlurper.parseText(json)
  5. println beanList

toJson:将实体转为字符串
parseText:将字符串转为实体

二、XML文件处理

1、读取xml文件数据

  1. final String xml='''
  2. <response version-api="2.0">
  3. <value>
  4. <books id="1" classification="android">
  5. <book available="20" id="1">
  6. <title>疯狂android讲义</title>
  7. <author id="1">李刚</author>
  8. </book>
  9. <book available="20" id="2">
  10. <title>疯狂JAVA讲义</title>
  11. <author id="2">疯子</author>
  12. </book>
  13. <book available="20" id="3">
  14. <title>疯狂PHP讲义</title>
  15. <author id="3">李刚</author>
  16. </book>
  17. </books>
  18. </value>
  19. </response>
  20. '''
  21. //开始解析xml数据
  22. def xmlSluper=new XmlSlurper()
  23. def response=xmlSluper.parseText(xml)
  24. //println response.value.books[0].book[0].title.text()
  25. //println response.value.books[0].@classification.text()
  26. //response.value.books.book.each{
  27. // it.each{
  28. // println it.title
  29. // }
  30. //}
  31. //
  32. //深度遍历xml数据
  33. //response.depthFirst().findAll{
  34. // if(!it.title.isEmpty()){
  35. // println it.title
  36. // }
  37. //}
  38. //广度遍历xml数据
  39. def name=response.value.books.children().findAll{
  40. it.name()=='book'
  41. }.collect {
  42. return it.title.text()
  43. }
  44. println name

提供了多种遍历方式

2、生成xml文件数据

/**
 * 生成xml格式
 * <langs type='current' count='3' mainstream='true>
 *      <language flavor='static' version='1.5'>Java</language>
 *      <language flavor='dynamic' version='1.6'>Groovy</language>
 * </langs>
 */
def sw=new StringWriter()
def xml=new MarkupBuilder(sw) //用于生成xml数据的核心类
//根节点langs创建成功
xml.langs(type:'current',count:'3',mainstream:'true'){
    //生成language指点,值不指定key即可
    language(flavor:'static',version:'1.5','Java')
    language(flavor:'dynamic',version:'1.6','Groovy')
}
//将sw的内容保存到文件即可生成xml文件
println sw

生成指定字符串的xml文件数据

class Langs{
    String type='current'
    int count=3
    boolean mainstream=true
    def language=ArrayList<Lanuage>
}

class Lanuage{
    String flavor
    String  version
    String value
}
def languageList=[] as Lanuage[]
languageList+=new Lanuage(flavor:  'static',version:  '1.5',value:'Java')
languageList+=new Lanuage(flavor:  'dynamic',version:  '1.7',value:  'Groovy')
def langs=new Langs(type:  'current',count:  '3',mainstream:  'true',language:languageList)

def sw=new StringWriter()
def xml=new MarkupBuilder(sw) //用于生成xml数据的核心类
xml.langs(type:langs.type,count:langs.count,mainstream: langs.mainstream){
    langs.language.each {
        language(flavor: it.flavor,version:it.version,it.value)
    }
}

println sw

将实体对象转为xml数据

3、文件处理

def file=new File('../MyGrooxy2s.iml')
//遍历
//file.eachLine {
//    println it
//}

//只有文本
//def text=file.getText()
//println text

//直接输出没有分页
//def result=file.readLines()
//println result
//

//通过reader读取部分数据
//def reader=file.withReader {
//    char[] buffer=new char[100]
//    it.read(buffer)
//    return buffer
//}
//println reader

不需要关闭流,groovy已经帮我们关闭了留


copy('../MyGrooxy2s.iml','../ssss.text')
def copy(String sourcePath,String destationPath){
    try{
        var sourcePathFile=new File(sourcePath)
        var destationFile=new File(destationPath)
        if(!sourcePathFile.exists()){
            println "文件不存在"
            return
        }
        var fileText=sourcePathFile.getText()
//        往文件中写,没有文件会自动创建
        destationFile.withWriter {
            it.write(fileText)
        }

    }
    catch(Exception e){
        e.printStackTrace()
    }
}

读取并写入文件