Problem with NAnt's xmlpoke task
This post was originally published at http://solepano.blogspot.com
There's an issue when trying to replace some part of an
xml file that is under a default namespace using NAnt’s
xmlpoke
task. It happened to me the other day when trying to
replace the version attribute in the following wix
file:
<?xml version="1.0" encoding="utf-8"?>
<Wix
xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
<Product Name="MyProduct"
Id="847A8D24-0F98-4b9f-AEA0-070ABD49F86C"
Language="1033" Codepage="1252" Version="1.0.0"
Manufacturer="MyCompany">
......
</Product>
</Wix>
Because of the namespace definition in the Wix
element, calling xmlpoke simple as
<xmlpoke file="${wix.file}"
xpath="/Wix/Product/@Version"
value="${build.new.version}"/>
does not work.
What it does work is the
following use of the task:
<xmlpoke file="${wix.file}"
xpath="/wx:Wix/wx:Product/@Version"
value="${build.version}">
<namespaces>
<namespace prefix="wx"
uri="http://schemas.microsoft.com/wix/2003/01/wi"
/>
</namespaces>
</xmlpoke>