# <xmlpoke>

Replaces text in an XML file at the location specified by an XPath expression.

The location specified by the XPath expression must exist, it will not create the parent elements for you. However, provided you have a root element you could use a series of the tasks to build the XML file up if necessary.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
file | file | The name of the file that contains the XML document that is going to be poked. | True
value | string | The value that replaces the contents of the selected nodes. | True
xpath | string | The XPath expression used to select which nodes are to be modified. | True
preserveWhitespace | bool | Namespace definitions to resolve prefixes in the XPath expression. | False
failonerror | bool | Determines if task failure stops the build, or is just reported. The default is true. | False
if | bool | If true then the task will be executed; otherwise, skipped. The default is true. | False
unless | bool | Opposite of `if`. If false then the task will be executed; otherwise, skipped. The default is false. | False
verbose | bool | Determines whether the task should report detailed build log messages. The default is false. | False

### Nested Elements:

#### <namespaces>

Namespace definitions to resolve prefixes in the XPath expression.

##### <namespace>

Represents an XML namespace.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
prefix | string | The prefix to associate with the namespace. | True
uri | string | The associated XML namespace URI. | True
if | bool | Indicates if the namespace should be added to the XmlNamespaceManager. If true then the namespace will be added; otherwise, skipped. The default is true. | False
unless | bool | Indicates if the namespace should not be added to the XmlNamespaceManager. list. If false then the parameter will be added; otherwise, skipped. The default is false. | False

##### </namespace>

#### </namespaces>

### Examples

- Change the `server` setting in the configuration from `testhost.somecompany.com` to `productionhost.somecompany.com`.

  XML file:

                  <?xml version="1.0" encoding="utf-8" ?>
                  <configuration>
                      <appSettings>
                          <add key="server" value="testhost.somecompany.com" />
                      </appSettings>
                  </configuration>

  Build fragment:

                  <xmlpoke
                      file="App.config"
                      xpath="/configuration/appSettings/add[@key = 'server']/@value"
                      value="productionhost.somecompany.com" />

- Modify the `noNamespaceSchemaLocation` in an XML file.

  XML file:

                  <?xml version="1.0" encoding="utf-8" ?>
                  <Commands xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Path Value">
                  </Commands>

  Build fragment:

                  <xmlpoke file="test.xml" xpath="/Commands/@xsi:noNamespaceSchemaLocation" value="d:\Commands.xsd">
                      <namespaces>
                          <namespace prefix="xsi" uri="http://www.w3.org/2001/XMLSchema-instance" />
                      </namespaces>
                  </xmlpoke>

### Requirements

Assembly: NAnt.Core (0.91.4312.0)