Save This Page
Home » apache-ant-1.7.1-src » org.apache.tools » ant » taskdefs » [javadoc | source]
org.apache.tools.ant.taskdefs
public class: XmlProperty [javadoc | source]
java.lang.Object
   org.apache.tools.ant.ProjectComponent
      org.apache.tools.ant.Task
         org.apache.tools.ant.taskdefs.XmlProperty

All Implemented Interfaces:
    Cloneable

Loads property values from a valid XML file, generating the property names from the file's element and attribute names.

Example:

<root-tag myattr="true">
<inner-tag someattr="val">Text</inner-tag>
<a2><a3><a4>false</a4></a3></a2>
<x>x1</x>
<x>x2</x>
</root-tag>

this generates the following properties:

root-tag(myattr)=true
root-tag.inner-tag=Text
root-tag.inner-tag(someattr)=val
root-tag.a2.a3.a4=false
root-tag.x=x1,x2

The collapseAttributes property of this task can be set to true (the default is false) which will instead result in the following properties (note the difference in names of properties corresponding to XML attributes):

root-tag.myattr=true
root-tag.inner-tag=Text
root-tag.inner-tag.someattr=val
root-tag.a2.a3.a4=false
root-tag.x=x1,x2

Optionally, to more closely mirror the abilities of the Property task, a selected set of attributes can be treated specially. To enable this behavior, the "semanticAttributes" property of this task must be set to true (it defaults to false). If this attribute is specified, the following attributes take on special meaning (setting this to true implicitly sets collapseAttributes to true as well):

For example, with keepRoot = false, the following properties file:

<root-tag>
<build>
<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>

is equivalent to the following entries in a build file:

<property name="build" location="build"/>
<property name="build.classes" location="${build.location}/classes"/>
<property name="build.reference" refid="build.classes"/>

<property name="run-time.jars" value="*.jar/>

<classpath id="compile.classpath">
<pathelement location="${build.classes}"/>
</classpath>

<classpath id="run-time.classpath">
<path refid="compile.classpath"/>
<pathelement path="${run-time.jars}"/>
</classpath>

This task requires the following attributes:

This task supports the following attributes:

Fields inherited from org.apache.tools.ant.Task:
target,  taskName,  taskType,  wrapper
Fields inherited from org.apache.tools.ant.ProjectComponent:
project,  location,  description
Constructor:
 public XmlProperty() 
Method from org.apache.tools.ant.taskdefs.XmlProperty Summary:
addConfigured,   addConfiguredXMLCatalog,   addNodeRecursively,   execute,   getCollapseAttributes,   getDelimiter,   getEntityResolver,   getFile,   getIncludeSementicAttribute,   getKeeproot,   getPrefix,   getResource,   getRootDirectory,   getSemanticAttributes,   getValidate,   init,   processNode,   setCollapseAttributes,   setDelimiter,   setFile,   setIncludeSemanticAttribute,   setKeeproot,   setPrefix,   setRootDirectory,   setSemanticAttributes,   setSrcResource,   setValidate,   supportsNonFileResources
Methods from org.apache.tools.ant.Task:
bindToOwner,   execute,   getOwningTarget,   getRuntimeConfigurableWrapper,   getTaskName,   getTaskType,   getWrapper,   handleErrorFlush,   handleErrorOutput,   handleFlush,   handleInput,   handleOutput,   init,   isInvalid,   log,   log,   log,   log,   markInvalid,   maybeConfigure,   perform,   reconfigure,   setOwningTarget,   setRuntimeConfigurableWrapper,   setTaskName,   setTaskType
Methods from org.apache.tools.ant.ProjectComponent:
clone,   getDescription,   getLocation,   getProject,   log,   log,   setDescription,   setLocation,   setProject
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.tools.ant.taskdefs.XmlProperty Detail:
 public  void addConfigured(ResourceCollection a) 
    Set the source resource.
 public  void addConfiguredXMLCatalog(XMLCatalog catalog) 
    add an XMLCatalog as a nested element; optional.
  void addNodeRecursively(Node node,
    String prefix) 
 public  void execute() throws BuildException 
    Run the task.
 protected boolean getCollapseAttributes() 
 public String getDelimiter() 
 protected EntityResolver getEntityResolver() 
 protected File getFile() 
 protected boolean getIncludeSementicAttribute() 
 protected boolean getKeeproot() 
 protected String getPrefix() 
 protected Resource getResource() 
 protected File getRootDirectory() 
 protected boolean getSemanticAttributes() 
 protected boolean getValidate() 
 public  void init() 
    Initializes the task.
 public Object processNode(Node node,
    String prefix,
    Object container) 
    Process the given node, adding any required attributes from this child node alone -- but not processing any children.
 public  void setCollapseAttributes(boolean collapseAttributes) 
    flag to treat attributes as nested elements; optional, default false
 public  void setDelimiter(String delimiter) 
 public  void setFile(File src) 
    The XML file to parse; required.
 public  void setIncludeSemanticAttribute(boolean includeSemanticAttribute) 
    Include the semantic attribute name as part of the property name. Ignored if semanticAttributes is not set to true.
 public  void setKeeproot(boolean keepRoot) 
    flag to include the xml root tag as a first value in the property name; optional, default is true
 public  void setPrefix(String prefix) 
    the prefix to prepend to each property
 public  void setRootDirectory(File rootDirectory) 
    The directory to use for resolving file references. Ignored if semanticAttributes is not set to true.
 public  void setSemanticAttributes(boolean semanticAttributes) 
    Attribute to enable special handling of attributes - see ant manual.
 public  void setSrcResource(Resource src) 
    The resource to pack; required.
 public  void setValidate(boolean validate) 
    flag to validate the XML file; optional, default false
 protected boolean supportsNonFileResources() 
    Whether this task can deal with non-file resources.

    This implementation returns true only if this task is <xmlproperty>. Any subclass of this class that also wants to support non-file resources needs to override this method. We need to do so for backwards compatibility reasons since we can't expect subclasses to support resources.