Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xmltasks不工作_Xml_Ant_Xmltask - Fatal编程技术网

xmltasks不工作

xmltasks不工作,xml,ant,xmltask,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

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

<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>

org.netbeans.modules.apisupport.project
.
.
.
ext/extensions/Zone_x.jar
../../Simple Marauroa Java/Zone Extension/dist/Zone_y.jar

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


有什么想法吗?

问题是输入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>

只需使用“:”作为本地名称空间。 前

replace path=“/:项目/:配置/:数据/:类路径扩展/:运行时相对路径/text()”

参考文件=


请阅读第节-路径和名称空间

您对XSLT解决方案感兴趣吗?这样做的好处是减少了依赖性,并提供了一个干净的解决方案。如果可以从ant实现,我对它没有任何问题。提供答案,我来看看。您使用XSLT的方法有任何更新吗?Hi@javydreamercsw。。。我遇到了类似的问题。确切的场景是:项目元素的xmlns=“…”属性(在源XML中)。如果删除该属性(或将其设置为“”),则XMLTask应能正常工作。这就是问题所在,但我仍在寻找解决方案。如果你发现了什么,请告诉我!你能给我完整的答案和你的建议吗?我不清楚您的意思。当xml标记具有xmlns属性时,xmltask不能正确使用普通XPath表达式。为了描述xmltask您想要找到的内容,您必须澄清您指的只是标记的本地名称。在您的例子中,表达式必须是这样的:
/*[local-name()='project']/*[local-name()='configuration']/*[local-name()='data']/*[local-name()='class-path-extension']/*[local-name()='runtime-relative-path']]/text()
很抱歉我的英语太糟糕了=]精彩的解释!救了我一天。非常感谢