xmltasks无效

时间:2011-10-06 20:11:50

标签: xml ant xmltask

我有以下任务,由于某种原因与我的文件不匹配:

<xmltask source="nbproject/project.xml" dest="nbproject/project.xml">
        <replace path="/project/configuration/data/class-path-extension/runtime-relative-path/text()" 
        withText="ext/extensions/${extension-lib.dist.jar}.jar"/>
        <replace path="/project/configuration/data/class-path-extension/binary-origin/text()" 
        withText="${original.project.dir}/dist/${extension-lib.dist.jar}.jar"/>
</xmltask>

这是我正在搜索的xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.apisupport.project</type>
<configuration>
    <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
        .
        .
        .
        <class-path-extension>
            <runtime-relative-path>ext/extensions/Zone_x.jar</runtime-relative-path>
            <binary-origin>../../Simple Marauroa Java/Zone Extension/dist/Zone_y.jar</binary-origin>
        </class-path-extension>
    </data>
</configuration>

我删除了对此问题不重要的内容。在同一文件上使用NetBeans的Xpath插件分别显示ext / extensions / Zone_x.jar和../../Simple Marauroa Java / Zone Extension / dist / Zone_y.jar的匹配项,但任务看不到它们。

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

问题是输入XML使用名称空间。解决方案是使用*[local-name()='project']代替project等,这意味着您需要编写

<xmltask source="nbproject/project.xml" dest="nbproject/project.xml">
    <replace path="/*[local-name()='project']/*[local-name()='configuration']/*[local-name()='data']/*[local-name()='class-path-extension']/*[local-name()='runtime-relative-path']/text()" 
        withText="ext/extensions/${extension-lib.dist.jar}.jar"/>
    <replace path="/*[local-name()='project']/*[local-name()='configuration']/*[local-name()='data']/*[local-name()='class-path-extension']/*[local-name()='binary-origin']/text()" 
        withText="${original.project.dir}/dist/${extension-lib.dist.jar}.jar"/>
</xmltask>

答案 1 :(得分:1)

只需使用“:”表示本地名称空间。 防爆。

replace path =“/:project /:configuration /:data /:class-path-extension /:runtime-relative-path / text()”

参考文件= https://today.java.net/article/2006/10/31/xml-manipulation-using-xmltask

阅读部分 - 路径和命名空间