首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy:将节点添加到NodeChildren

Groovy:将节点添加到NodeChildren
EN

Stack Overflow用户
提问于 2013-04-11 11:52:21
回答 1查看 1.1K关注 0票数 0

我是Groovy的新手,不知何故在语法上苦苦挣扎。我有一个NodeChildren类型的对象(在groovy.util.slurpersupport中),它表示如下的XML结构:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.camerontec.catalys.node</groupId>
  <artifactId>catalys-node-core</artifactId>
  <version>2.1-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.6.2</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.4</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

我所要做的就是给它添加另一个依赖项,例如:

代码语言:javascript
复制
<dependency>
  <groupId>jdom</groupId>
  <artifactId>jdom</artifactId>
  <version>1.1.1</version>
  <scope>compile</scope>
</dependency>

我必须相当简单,但由于某些原因,我无法理解它。感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2013-04-11 17:01:36

您可以使用XmlSlurper (如果您关闭名称空间,使XmlSlurper不会在所有非名称空间的标签前加上tag0) --我删除了两个原始的dep,以节省本答案中的空间

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

def original = '''<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.camerontec.catalys.node</groupId>
  <artifactId>catalys-node-core</artifactId>
  <version>2.1-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>'''

def newDep = '''<dependency>
  <groupId>jdom</groupId>
  <artifactId>jdom</artifactId>
  <version>1.1.1</version>
  <scope>compile</scope>
</dependency>'''

def newNode = new XmlSlurper().parseText( newDep )
def oldNode = new XmlSlurper( false, false ).parseText( original )

oldNode.dependencies.appendNode( newNode )
String xmlStr = XmlUtil.serialize( new StreamingMarkupBuilder().bind { mkp.yield oldNode } )
println xmlStr
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15940468

复制
相关文章

相似问题

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