groovy xml操作
1. groovy解析xml格式数据
groovy使用xmlSluper对xml进行解析,先定一个xml格式的字符串:
final String xml = '''<response version-api="2.0"><value><books id="1" classification="android"><book available="20" id="1"><title>疯狂Android讲义</title><author id="1">李刚</author></book><book available="14" id="2"><title>第一行代码</title><author id="2">郭林</author></book><book available="13" id="3"><title>Android开发艺术探索</title><author id="3">任玉刚</author></book><book available="5" id="4"><title>Android源码设计模式</title><author id="4">何红辉</author></book></books><books id="2" classification="web"><book available="10" id="1"><title>Vue从入门到精通</title><author id="4">李刚</author></book></books></value></response>
'''
1.1 基本使用
下面是xml解析的一个例子,分别输出了节点和属性:
//开始解析此xml数据
def xmlSluper = new XmlSlurper()
def response = xmlSluper.parseText(xml)println response.value.books[0].book[0].title.text()
println response.value.books[0].book[0].author.text()
println response.value.books[1].book[0].@available
输出结果
疯狂Android讲义
李刚
10
1.2 查询
查询所有作者是李刚的书名:
def xmlSluper = new XmlSlurper()
def response = xmlSluper.parseText(xml)def list = []
response.value.books.each { books ->//下面开始对书结点进行遍历books.book.each { book ->def author = book.author.text()if (author.equals('李刚')) {list.add(book.title.text())}}
}
println list.toListString()
输出结果:
[疯狂Android讲义, Vue从入门到精通]
groovy为我们提供了一个深度遍历的方法,通过该方法一样可以实现上述功能。
def xmlSluper = new XmlSlurper()
def response = xmlSluper.parseText(xml)
//深度遍历xml数据
def titles = response.depthFirst().findAll { book ->return book.author.text() == '李刚' ? true : false
}
println titles.toListString()
深度遍历另一种写法是把depthFirst()使用’**’替换,效果是一样的。
使用广度遍历方法遍历xml数据:
def xmlSluper = new XmlSlurper()
def response = xmlSluper.parseText(xml)//广度遍历xml数据
def name = response.value.books.children().findAll { node ->node.name() == 'book' && node.@id == '2'
}.collect { node ->return node.title.text()
}println name
输出结果:
[第一行代码]
广度遍历children()方法可以使用’*’替代,效果一样。
2. groovy创建xml格式数据
groovy生成xml主要使用MarkupBuilder类,该类是生成xml的核心类。
2.1 基础使用
使用MarkupBuilder类生成xml的例子:
def sw = new StringWriter()
def xmlBuilder = new MarkupBuilder(sw) //用来生成xml数据的核心类
//根结点langs创建成功
xmlBuilder.langs(type: 'current', count: '3',mainstream: 'true') {//第一个language结点language(flavor: 'static', version: '1.5', 'java') {age('16')}language(flavor: 'dynamic', version: '1.6') {age('10')}language(flavor: 'dynamic', version: '1.9', 'JavaScript')
}println sw
输出结果:
<langs type='current' count='3' mainstream='true'> <language flavor='static' version='1.5'>java<age>16</age></language><language flavor='dynamic' version='1.6'><age>10</age></language><language flavor='dynamic' version='1.9'>JavaScript</language>
</langs>
2.2 将实体类数据转换成xml格式数据
def sw = new StringWriter()
def xmlBuilder = new MarkupBuilder(sw) //用来生成xml数据的核心类
def langs = new Langs()
xmlBuilder.langs(type: langs.type, count: langs.count,mainstream: langs.mainstream) {//遍历所有的子结点langs.languages.each { lang ->language(flavor: lang.flavor,version: lang.version, lang.value)}
}
println sw
//对应xml中的langs结点
class Langs {String type = 'current'int count = 3boolean mainstream = truedef languages = [new Language(flavor: 'static',version: '1.5', value: 'Java'),new Language(flavor: 'dynamic',version: '1.3', value: 'Groovy'),new Language(flavor: 'dynamic',version: '1.6', value: 'JavaScript')]
}
//对应xml中的languang结点
class Language {String flavorString versionString value
}
输出结果:
<langs type='current' count='3' mainstream='true'><language flavor='static' version='1.5'>Java</language><language flavor='dynamic' version='1.3'>Groovy</language><language flavor='dynamic' version='1.6'>JavaScript</language>
</langs>
groovy xml操作相关推荐
- LINQ系列:LINQ to XML操作
LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...
- Qt的Xml操作QDomDocument
Qt的Xml操作QDomDocument Qt对于Xml的支持是很好的,一些我们需要的操作应有尽有,下面简单介绍一下怎样使用.主要有以下几点使用: 写xml到文件 读xml 添加节点到xml 删除xm ...
- php操作xml类,PHP实现的XML操作类【XML Library】
本文实例讲述了PHP实现的XML操作类.分享给大家供大家参考,具体如下: 这是一个接口程序,需要大量分析解析XML,PHP的xml_parse_into_struct()函数不能直接生成便于使用的数组 ...
- Open XML操作Excel导入数据
项目中发现使用OleDb(using System.Data.OleDb)相关对象处理Excel导入功能,不是很稳定经常出问题,需要把这个问题解决掉.项目组提出使用OpenXML来处理Excel的导入 ...
- python读取xml编码gb2312_【转】python XML 操作总结(创建、保存和删除,支持utf-8和gb2312)...
最近写程序需要用到xml操作,看了看python.org上面的几个xml类库,还是一头雾水,感觉太学术化了,都那么吝惜写几个例子.所以自己整理了一下,算是个小总结,和大家分享一下吧. 对于简单的操作x ...
- python对XML 操作
python对XML 操作 一.XML的读取. 在 NewEdit 中有代码片段的功能,代码片段分为片段的分类和片段的内容.在缺省情况下都是用XML格式保存的.下面我讲述一下,如何使用minidom来 ...
- Python XML操作处理
Python XML操作处理 Python XML操作处理: 可扩展标记语言(XML)是一个很象HTML或SGML的标记语言.这是建议由万维网联盟作为一个开放的标准. 什么是XML ? 可扩展标记语言 ...
- C#:XML操作类--转
写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...
- php xml 格式化,PHP:XML操作
PHP:XML操作 XML 是一个很实用的东西,存储数据.交换数据都很方便,但如何对 XML 进行基本的操作呢? 对 XML 的操作包括创建 XML 文档,添加.查看.修改.删除数据,操作方法有很多种 ...
最新文章
- Centos的yum源更换为国内的阿里云源
- java 获得站点地址_JavaWeb项目里面的路径获取方法总结
- 华为云严选上新啦!高效准确的数据同步方案来了
- 碳酸铜行业调研报告 - 市场现状分析与发展前景预测
- 日常问题解决记录三:记一次Win10安装Oracle11g后遇到的问题
- 停课集训 11.30
- Git分布式版本控制
- 代码分享:php对二维数组进行排序
- ##智能优化算法复习--免疫算法IA
- 检测和分割算法常用的评价指标
- 港科夜闻|香港科技大学举办北京冬奥精神云分享会,借鉴成功经验延续奥运精神...
- python之利用requests库爬取西刺代理,并检验IP的活性
- vue实现鼠标放上去就有提示_Vue实现鼠标经过文字显示悬浮框效果的示例代码
- 挖煤小伙带你SSH安全加固
- zcy算法入门笔记004
- 计组——从一道计算题题开始,展开关于总线平均传输速率的分析
- 硬盘坏道检测和修复(HDDL、MHDD、THDD)图文教程
- 2020的平凡与感动
- 工业与民用配电设计手册第四版_工业电气设计|超赞! 改进版配电柜 内部结构解析大全...
- 股票连续跌停后开板表现