Class XmlTool
java.lang.Object
org.apache.velocity.tools.generic.SafeConfig
org.apache.velocity.tools.generic.XmlTool
- All Implemented Interfaces:
Serializable
Tool for reading/navigating XML files, with XPath expressions support.
Configuration parameters:
resource=file or classpath resourcesource=URL
Here's a short example:
XML file:
<foo><bar>woogie</bar><a name="test"/></foo>
Template:
$foo.bar.text
$foo.find('a')
$foo.a.name
Output:
woogie
<a name="test"/>
test
Configuration:
<tools>
<toolbox scope="application">
<tool class="org.apache.velocity.tools.generic.XmlTool"
key="foo" source="doc.xml"/>
</toolbox>
</tools>
Note that this tool is included in the default GenericTools configuration
under the key "xml". You can read but unless you set safeMode="false" for it, you will
only be able to parse XML strings. Safe mode is on by default and blocks
access to the read(String) method.
- Since:
- VelocityTools 2.0
- Version:
- $Revision: 1769055 $ $Date: 2006-11-27 10:49:37 -0800 (Mon, 27 Nov 2006) $
- Author:
- Nathan Bubna, Claude Brisson
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classIterator implementation that wraps a Node list iterator to return new XmlTool instances for each item in the wrapped iterator.s -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ImportSupportImportSupport utility which provides underlying i/oFields inherited from class SafeConfig
LOCK_CONFIG_KEY, log, LOGGER_NAME_KEY, SAFE_MODE_KEY, USE_CLASS_LOGGER_KEY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionchildren()protected voidconfigure(ValueParser values) Configuration.Reads and parses a remote or local URLConverts the specified object to a String and callsfind(String)with that.This will first attempt to find an attribute with the specified name and return its value.getFirst()getLast()getName()Asksget(Object)for a "name" result.Returns the name of the root node.Returns the XPath that identifies the first/soleNoderepresented by this instance.getPath()Deprecated.use getNodePath()getText()Returns the concatenated text content of all the internally held nodes.protected voidinitializeImportSupport(ValueParser config) ImportSupport initializationbooleanisEmpty()Returnstrueif there are noNodes internally held by this instance.iterator()node()Returns the first/soleNodefrom this instance's internal Node list, if any.parents()Reads and parses a local resource fileprotected voidSets a singular rootNodefor this instance.intsize()Returns the number ofNodes internally held by this instance.toString()If this instance has no XMLNodes, then this returns the result ofsuper.toString().Methods inherited from class SafeConfig
configure, getLog, initLogger, isConfigLocked, isSafeMode, setLockConfig, setSafeMode
-
Field Details
-
importSupport
ImportSupport utility which provides underlying i/o
-
-
Constructor Details
-
XmlTool
public XmlTool()Default constructor. -
XmlTool
-
XmlTool
-
-
Method Details
-
initializeImportSupport
ImportSupport initialization- Parameters:
config- configuration values
-
configure
Configuration.- Overrides:
configurein classSafeConfig- Parameters:
values- configuration values
-
setRoot
-
parse
-
read
-
fetch
-
get
This will first attempt to find an attribute with the specified name and return its value. If no such attribute exists or its value isnull, this will attempt to convert the given value to aNumberand get the result ofget(Number). If the number conversion fails, then this will convert the object to a string. If that string does not contain a '/', it appends the result ofgetPath()and a '/' to the front of it. Finally, it delegates the string to thefind(String)method and returns the result of that.- Parameters:
o- attribute name, number, xpath relative expression- Returns:
- found value or null
-
getName
Asksget(Object)for a "name" result. If none, this will return the result ofgetNodeName().- Returns:
- found value or null
-
getNodeName
-
getPath
Deprecated.use getNodePath()Returns the XPath that identifies the first/sole
Noderepresented by this instance.This function is deprecated. In future versions, this function will first try
get("path")before resorting togetNodePath().- Returns:
- xpath node path
-
getNodePath
-
attr
Returns the value of the specified attribute for the first/soleNodein the internal Node list for this instance, if that Node is anElement. If it is a non-Element node type or there is no value for that attribute in this element, then this will returnnull.- Parameters:
o- attribute name- Returns:
- attribute value or null
-
attributes
-
isEmpty
public boolean isEmpty()Returnstrueif there are noNodes internally held by this instance.- Returns:
- whether the set of current nodes is empty
-
size
public int size()Returns the number ofNodes internally held by this instance.- Returns:
- the size of the set of current nodes
-
iterator
-
getFirst
-
getLast
-
get
-
node
-
find
Converts the specified object to a String and callsfind(String)with that.- Parameters:
o- xpath to search- Returns:
- a wrapper on found nodes or null
-
find
Performs an XPath selection on the current set ofNodes held by this instance and returns a newXmlToolinstance that wraps those results. If the specified value is null or this instance does not currently hold any nodes, then this will returnnull. If the specified value, when converted to a string, does not contain a '/' character, then it has "//" prepended to it. This means that a call to$xml.find("a")is equivalent to calling$xml.find("//a"). The full range of XPath selectors is supported here.- Parameters:
xpath- xpath to search- Returns:
- a wrapper on found nodes or null
-
getParent
-
parents
-
children
-
getText
Returns the concatenated text content of all the internally held nodes. Obviously, this is most useful when only one node is held.- Returns:
- text of current nodes or null
-
toString
-