首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Gpath移动节点

使用Gpath移动节点
EN

Stack Overflow用户
提问于 2019-01-16 16:09:30
回答 1查看 62关注 0票数 0

给定数据模型

代码语言:javascript
复制
<outerTag>
    <tagA>
        </tagB>
    </tagA>
    <tagC>
        <interestingContent>
           ...
        </interestingContent>
    </tagC> 
</outerTag>    

我想将<interestingContent>的子节点移动到<tagB>中。我不知道要移动的节点的可能内容,它们可能也有孩子。我目前正在使用GPath,我想像这样简单的东西应该可以工作:

代码语言:javascript
复制
outertag.tagC.childNodes().each { node ->
    outerTag.tagA.tagB.appendNode(node)
}

但是,虽然我能够读取节点中的名称和文本,但appendNode似乎并没有做到这一点。虽然理论上我可以从子节点读取属性、文本和名称,使用它来创建新节点,并附加该节点,但我觉得这是不必要的补充,特别是因为它需要是一个递归函数,因为节点本身可以有子节点。

EN

回答 1

Stack Overflow用户

发布于 2019-01-16 18:44:38

对代码进行细微的更改

代码语言:javascript
复制
def outerTag = new XmlParser().parseText('''<outerTag>
    <tagA>
        <tagB/>
    </tagA>
    <tagC>
        <interestingContent a="a">1</interestingContent>
        <interestingContent a="b">2</interestingContent>
    </tagC>
</outerTag>''')

outerTag.tagC[0].children().each { child ->
    outerTag.tagA.tagB[0].append(child)
}
//reset value for tagC
outerTag.tagC[0].setValue("")

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

https://stackoverflow.com/questions/54212689

复制
相关文章

相似问题

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