Loads property values from a well-formed xml file. There are no other restrictions than "well-formed". You can choose the layout you want. For example this XML property file:
<root>
<properties>
<foo>bar</foo>
</properties>
</root>
is roughly equivalent to this Java property file:
root.properties.foo = bar
By default, this load does no processing of the input. In particular, unlike the Property task, property references (i.e., ${foo}) are not resolved.
For example, with semantic attribute processing enabled, this XML property file:
<root>
<properties>
<foo location="bar"/>
<quux>${root.properties.foo}</quux>
</properties>
</root>
is roughly equivalent to the following fragments in a build.xml file:
<property name="root.properties.foo" location="bar"/>
<property name="root.properties.quux" value="${root.properties.foo}"/>
| Attribute | Description | Required |
| file | The XML file to parse. | Yes, or a nested resource collection. |
| prefix | The prefix to prepend to each property | No |
| keepRoot | Keep the xml root tag as the first value in the property name. | No, default is true. |
| validate | Validate the input file (e.g. by a DTD). Otherwise the XML must only be well-formed. | No, default is false. |
| collapseAttributes | Treat attributes as nested elements. | No, default is false. |
| semanticAttributes | Enable special handling of certain attribute names. See the Semantic Attributes section for more information. | No, default is false. |
| includeSemanticAttribute | Include the semantic attribute name as part of the property name. Ignored if semanticAttributes is not set to true. See the Semantic Attributes section for more information. | No, default is false. |
| rootDirectory | The directory to use for resolving file references. Ignored if semanticAttributes is not set to true. | No, default is ${basedir}. |
| delimiter | Delimiter for splitting multiple values. since Apache Ant 1.7.1 |
No, defaults to comma |
The <xmlcatalog> element is used to perform entity resolution.
The specified resource will be used as input.
Here is an example xml file that does not have any semantic attributes.
<root-tag myattr="true">
<inner-tag someattr="val">Text</inner-tag>
<a2><a3><a4>false</a4></a3></a2>
</root-tag>
This entry in a build file:
<xmlproperty file="somefile.xml"/>is equivalent to the following properties:
root-tag(myattr)=true root-tag.inner-tag=Text root-tag.inner-tag(someattr)=val root-tag.a2.a3.a4=false
This entry in a build file:
<xmlproperty file="somefile.xml" collapseAttributes="true"/>is equivalent to the following properties:
root-tag.myattr=true root-tag.inner-tag=Text root-tag.inner-tag.someatt=val root-tag.a2.a3.a4=false
This entry in a build file:
<xmlproperty file="somefile.xml" keepRoot="false"/>is equivalent to the following properties:
inner-tag=Text inner-tag(someattr)=val a2.a3.a4=false
Here is an example xml file that has semantic attributes.
<root-tag>
<version value="0.0.1"/>
<build folder="build">
<classes id="build.classes" location="${build.folder}/classes"/>
<reference refid="build.classes"/>
</build>
<compile>
<classpath pathid="compile.classpath">
<pathelement location="${build.classes}"/>
</classpath>
</compile>
<run-time>
<jars>*.jar</jars>
<classpath pathid="run-time.classpath">
<path refid="compile.classpath"/>
<pathelement path="${run-time.jars}"/>
</classpath>
</run-time>
</root-tag>
This entry in a build file:
<xmlproperty file="somefile.xml" keepRoot="false"
semanticAttributes="true"/>
is equivalent to the following entries in a build file:
<property name="version" value="0.0.1"/>
<property name="build.folder" value="build"/>
<property name="build.classes" location="${build.folder}/classes" id="build.classes"/>
<property name="build.reference" refid="build.classes"/>
<property name="run-time.jars" value="*.jar"/>
<path id="compile.classpath">
<pathelement location="${build.classes}"/>
</path>
<path id="run-time.classpath">
<path refid="compile.classpath"/>
<pathelement path="${run-time.jars}"/>
</path>
This entry in a build file:
<xmlproperty file="somefile.xml"
semanticAttributes="true" keepRoot="false"
includeSemanticAttribute="true"/>
is equivalent to the following entries in a build file:
<property name="version.value" value="0.0.1"/>
<property name="build.folder" value="build"/>
<property name="build.classes.location" location="${build.folder}/classes"/>
<property name="build.reference.refid" refid="build.classes"/>
<property name="run-time.jars" value="*.jar"/>
<path id="compile.classpath">
<pathelement location="${build.classes}"/>
</path>
<path id="run-time.classpath">
<path refid="compile.classpath"/>
<pathelement path="${run-time.jars}"/>
</path>