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()
很抱歉我的英语太糟糕了=]精彩的解释!救了我一天。非常感谢