首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不改变文件结构的情况下,有没有替代ANT的XMLTask的方法?

在不改变文件结构的情况下,有没有替代ANT的XMLTask的方法?
EN

Stack Overflow用户
提问于 2011-12-03 22:05:42
回答 3查看 934关注 0票数 0

当使用Groovy的XMLParser (和smiliar API)更改XML中的文本节点的内容时,它在解析文件时会丢失整体结构,因此在写回文件时也会丢失整体结构。例如,空格改变,注释被删除,dtd引用被剥离。

有一个名为XMLTask的ANT库,它允许在XPath的帮助下进行简单的替换,并维护文件的整体结构。在Java、Groovy、Jython或其朋友中是否有类似且易于使用的API允许这样做?最好是Groovy,因此它可以很好地与Gradle集成。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-04 03:54:55

您可以将xmltask放在类路径中,并使用groovy的AntBuilder。这里有一个this here I believe的例子

票数 2
EN

Stack Overflow用户

发布于 2011-12-04 20:43:07

我发现groovy中的DOMBuilder实际上保留了输入文件中的结构、注释和模式引用:

代码语言:javascript
复制
import groovy.xml.DOMBuilder
import groovy.xml.XmlUtil
import static javax.xml.xpath.XPathConstants.*
import javax.xml.xpath.*

def doc = DOMBuilder.parse(new StringReader(new File("ejb-jar.xml").getText()), false, false).documentElement

use(groovy.xml.dom.DOMCategory) {
    nodes= doc.xpath( "//session/ejb-name[text()='EmployeeFacade']/../description", NODESET)
    println nodes.getLength()
    nodes.each{ 
        it.value = "TEST"
    }
}

def result = XmlUtil.serialize(doc)
println result

没想到这会成功。

票数 1
EN

Stack Overflow用户

发布于 2011-12-03 22:41:21

在纯java http://www.ibm.com/developerworks/library/x-javaxpathapi/index.html中也有XPath匹配器。

有关示例,请参阅Listing 7. XPath query that uses namespaces。主要的理论是你写一个匹配器并循环结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8368195

复制
相关文章

相似问题

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