public class XmlProperty extends Task
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:
Constructor and Description |
---|
XmlProperty()
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
addConfigured(ResourceCollection a)
Set the source resource.
|
void |
addConfiguredXMLCatalog(XMLCatalog catalog)
add an XMLCatalog as a nested element; optional.
|
void |
execute()
Run the task.
|
protected boolean |
getCollapseAttributes() |
String |
getDelimiter()
Get the current delimiter.
|
protected org.xml.sax.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() |
void |
init()
Initializes the task.
|
Object |
processNode(org.w3c.dom.Node node,
String prefix,
Object container)
Process the given node, adding any required attributes from
this child node alone -- but not processing any
children.
|
void |
setCollapseAttributes(boolean collapseAttributes)
flag to treat attributes as nested elements;
optional, default false
|
void |
setDelimiter(String delimiter)
Sets a new delimiter.
|
void |
setFile(File src)
The XML file to parse; required.
|
void |
setIncludeSemanticAttribute(boolean includeSemanticAttribute)
Include the semantic attribute name as part of the property name.
|
void |
setKeeproot(boolean keepRoot)
flag to include the xml root tag as a
first value in the property name; optional,
default is true
|
void |
setPrefix(String prefix)
the prefix to prepend to each property
|
void |
setRootDirectory(File rootDirectory)
The directory to use for resolving file references.
|
void |
setSemanticAttributes(boolean semanticAttributes)
Attribute to enable special handling of attributes - see ant manual.
|
void |
setSrcResource(Resource src)
The resource to pack; required.
|
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.
|
bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject
public void addConfigured(ResourceCollection a)
a
- the resource to pack as a single element Resource collection.public void addConfiguredXMLCatalog(XMLCatalog catalog)
catalog
- the XMLCatalog to usepublic void execute() throws BuildException
execute
in class Task
BuildException
- The exception raised during task execution.protected boolean getCollapseAttributes()
public String getDelimiter()
protected org.xml.sax.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 Object processNode(org.w3c.dom.Node node, String prefix, Object container)
node
- the XML Node to parseprefix
- A string to prepend to any properties that get
added by this node.container
- Optionally, an object that a parent node
generated that this node might belong to. For example, this
node could be within a node that generated a Path.public void setCollapseAttributes(boolean collapseAttributes)
collapseAttributes
- if true treat attributes as nested elementspublic void setDelimiter(String delimiter)
delimiter
- new valuepublic void setFile(File src)
src
- the file to parsepublic void setIncludeSemanticAttribute(boolean includeSemanticAttribute)
includeSemanticAttribute
- if true include the semantic attribute
name.public void setKeeproot(boolean keepRoot)
keepRoot
- if true (default), include the xml root tagpublic void setPrefix(String prefix)
prefix
- the prefix to prepend to each propertypublic void setRootDirectory(File rootDirectory)
rootDirectory
- the directory.public void setSemanticAttributes(boolean semanticAttributes)
semanticAttributes
- if true enable the special handling.public void setSrcResource(Resource src)
src
- resource to expandpublic void setValidate(boolean validate)
validate
- if true validate the XML file, default falseprotected boolean supportsNonFileResources()
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.