首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy XmlSlurper引用新节点

Groovy XmlSlurper引用新节点
EN

Stack Overflow用户
提问于 2014-07-31 05:36:50
回答 1查看 3.8K关注 0票数 2

我有一些用XmlSlurper解析的xml,我想添加一个新节点,然后引用这个新节点。这演示了我正在尝试做的事情。除了1.添加节点2.序列化3.再次解析4.引用新节点?

代码语言:javascript
复制
import groovy.xml.XmlUtil
def xml = new XmlSlurper().parseText("<foo/>") 
xml.appendNode({bar()});
//now try to append something to bar.  Probably doesn't work because it's a closure
xml.bar.appendNode({baz()})
//no baz inside bar
println XmlUtil.serialize(xml)

谢谢。

编辑:

您必须使用XMLParser才能使其工作:

代码语言:javascript
复制
import groovy.xml.XmlUtil

//slurper - does NOT work
def xml = new XmlSlurper().parseText("<foo/>") 
xml.appendNode({bar()});
//now try to append something to bar
xml.bar.appendNode({baz()})
//no baz inside bar
println XmlUtil.serialize(xml)

//parser - works

xml = new XmlParser().parseText("<foo/>") 
xml.appendNode('bar');
//now try to append something to bar
xml.bar.first().appendNode('baz')
//no baz inside bar
println XmlUtil.serialize(xml)

原因在这篇文章的回答中解释了:

Groovy XmlSlurper vs XmlParser

EN

回答 1

Stack Overflow用户

发布于 2014-07-31 08:06:12

如下所示,使用过程中会出现什么问题?

代码语言:javascript
复制
import groovy.xml.XmlUtil

def xml = new XmlSlurper().parseText( "<foo/>" ) 

xml.appendNode { 
    bar { 
        baz()
    } 
}

println XmlUtil.serialize( xml )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25047426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档