文档章节

怎样使用Groovy给XML增加特性

圣洁之子
 圣洁之子
发布于 2015/03/28 21:06
字数 185
阅读 553
收藏 2

怎样使用Groovy给XML增加特性?


问:

在Groovy中,我需要增加一个特性(attribute)到XML的根元素。我想使用 XmlSlurper。该怎样做?增加元素是很简单。

答:

在Groovy Console 运行以下代码,结果良好。

import groovy.xml.StreamingMarkupBuilder

// the original XML
def input = "<foo><bar></bar></foo>"

// add attributeName="attributeValue" to the root
def root = new XmlSlurper().parseText(input)
root.@attributeName = 'attributeValue'

// get the modified XML and check that it worked
def outputBuilder = new StreamingMarkupBuilder()
String updatedXml = outputBuilder.bind{ mkp.yield root }

assert "<foo attributeName='attributeValue'><bar></bar></foo>" == updatedXml

增加一个特性与读一个特性是一样的:

import groovy.xml.StreamingMarkupBuilder

def input = '''
<thing>
    <more>
    </more>
</thing>'''

def root = new XmlSlurper().parseText(input)

root.@stuff = 'new'

def outputBuilder = new StreamingMarkupBuilder()
String result = outputBuilder.bind{ mkp.yield root }

println result

将生成:

<thing stuff='new'><more></more></thing>

来源: <http://stackoverflow.com/questions/7795494/how-to-add-xml-attribute-using-groovy>


© 著作权归作者所有

共有 人打赏支持
圣洁之子
粉丝 6
博文 306
码字总数 92734
作品 0
深圳
后端工程师
Groovy 2018 Roadmap:支持 Java 8 lambda 和 Java 9

Groovy 是一门基于 JVM 的动态编程语言,这门成熟的 JVM 编程语言将会有怎样的发展?根据它的 2018 Roadmap,我们发现,Groovy 将会进行一些功能方面的增强,例如支持 Java 9 的模块化和 Ja...

局长
2017/12/05
1K
9
Groovy 2.0 新特性之:模块化的 Groovy 以及扩展

更加模块化的 Groovy 关于 Groovy 2.0 新特性,最后我们要讲到的便是模块化。和 Java 一样,Groovy 不只是一个编程语言,同时还提供一组不同的 API 用于不同用途,包括:模板、Swing UI 构建...

红薯
2012/06/30
3.5K
5
关于语言的学习

.NET Assembly X86 Alpha ASP C++ C# Clojure CSS Dephi DTD Fortra Groovy HTML Java Java Script Java Server Page Late X Lisp Lua Matlab Pascal Perl PHP Python Ruby Scala Shell Scri......

870177103
2013/08/03
744
18
Spock单元测试框架使用详解

Spock(Spock官网:http://spockframework.org/ )作为java和Groovy测试一种表达的规范语言,其参考了Junit、Groovy、jMock、Scala等众多语言的优点,并采用Groovy作为其语法,目前能够在绝大多...

zhglance
2017/11/16
0
0
Gradle从入门到实战 - Groovy基础

前言 Android方向的第一期文章,会专注于Gradle系列,名字叫做『 Gradle从入门到实战』,计划有如下几个课程: Groovy基础 全面理解Gradle 如何创建Gradle插件 分析Android的build tools插件...

亭子happy
06/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

#mysql50# not Exist

data 目录有中文名称,可能是复制的"复件...."

少年不搬砖老大徒伤悲
18分钟前
1
0
在yii2中,让你action参数支持POST数据的小方法

我们先来看一段代码 class RaController extends Controller { public $enableCsrfValidation = false; public function actionSay($username = '',$city = ''){ echo "{$......

阿北2017
27分钟前
2
0
macOS 10.14 Mojave

在近日发布的 macOS 10.14 Mojave 操作系统中,有人发现它(在某些机型中)悄然禁用了先前的「次像素平滑渲染」选项,导致部分(尤其是使用非高分辨率显示器)用户觉得字体比先前的更细更难看...

火力全開
31分钟前
1
0
 实现分布式锁的正确姿势

实现分布式锁的正确姿势 原理分析 最近看到好多博主都在推分布式锁,实现方式很多,基于db、redis、zookeeper。zookeeper方式实现起来比较繁琐,这里我们就谈谈基于redis实现分布式锁的正确实...

DemonsI
36分钟前
1
0
微信小程序 、支付宝小程序、百度小程序和钉钉e应用的汇总

2018年9月25日 百度小程序开放企业申请 微信小程序:现在微信小游戏都热火朝天了,而且已经有了云开发,包括提供的能力、文档、社区等都相对完善,也有相关的变现方式; 支付宝小程序:https...

to_be_better
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部