Xmltasks not working

I have the following task and for some reason does not match my file:

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

Here is the xml file I'm looking for:

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

I deleted material that is not relevant for this question. Using the Xpath plugin for NetBeans in the same file shows matches for ext / extensions / Zone_x.jar and .. /../Simple Marauroa Java / Zone Extension / dist / Zone_y.jar respectively, but the task does not see them.

Any ideas?

+4
source share
3 answers

The problem is that the input XML uses namespaces. The solution is to use *[local-name()='project'] instead of project , etc., which means you need to write

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

just use ":" for the local namespace. Ex.

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

Reference document = https://today.java.net/article/2006/10/31/xml-manipulation-using-xmltask

Reading Section - Outlines and Namespaces

+1
source

I am going to assume that xmltask is not like when you specify the source and dest with the same file name.

If you need to replace, try specifying a temporary file name for the dest attribute, and then use the move task to replace the original after.

-2
source

All Articles