Use an implementation of XMLConfiguration to load configuration
parameters from an XML document. The following XML document contains
configuration information that is loaded with a DOMConfiguration object:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<engine-config>
<start-criteria>
<criteria type="critical">
Temperature Above -10 Celsius
</criteria>
<criteria>
Fuel tank is not empty
</criteria>
</start-criteria>
<name>
<first>Tom</first>
<last>Payne</last>
</name>
<horsepower>42</horsepower>
</engine-config>A DOMConfiguration object uses
the Xerces XML parser to parse an entire XML document into a DOM
Document object. Subsequent calls to
methods on the Configuration
interface cause the DOMConfiguration
object to traverse nodes in the Document. The code to read in this XML
configuration with DOMConfiguration
follows:
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.DOMConfiguration;
String resource = "com/discursive/jccook/configuration/global.xml";
Configuration config = new DOMConfiguration(resource);
// Retrieve a list of all Criteria elements
List startCriteria = config.getList("start-criteria.criteria");
// Retrieve the value of the first criteria element
String firstCriteria = config.getString("start-criteria.criteria(0)");
// Retrieve the type attribute of the first criteria element
String firstCriteriaType = config.getString("start-criteria.criteria(0)[@type]");
// Retrieve the horsepower as an int
int horsepower = config.getInt("horsepower");Passing a String to the
constructor of DOMConfiguration loads
an XML document from the classpath as a resource. If you need to load
XML configuration from a file, pass a File object to the DOMConfiguration constructor. Configuration
parameters are retrieved using methods from the Configuration interface, and parameters are
referenced using a syntax that resembles XPath. Subelements are
referenced by appending a period and the subelement name to the name of
an element; in this example, name.first references the subelement first of the element name. Attributes are referenced by prefixing
an attribute name with an @ and surrounding the reference with brackets;
in this example, start-critera.criteria(0)[@type] references
the type attribute of the criteria element. Specific elements in a list
of elements are referenced by surrounding the index with parentheses;
start-criteria.criteria(0) references
the first criteria element.
DOMConfiguration will only work
if the Xerces XML parser is available in your classpath. If Xerces is
not available, you may use another implementation of XMLConfiguration, DOM4JConfiguration, which is written to parse
an XML document using DOM4J. To use the DOM4JConfiguration, make sure that DOM4J is in
your classpath, and interchange DOM4JConfiguration with DOMConfiguration from the previous
example.
For more information about downloading the Xerces XML parser, see the Xerces project page at http://xml.apache.org/xerces.
For more information about downloading DOM4J, see the DOM4J project page at http://www.dom4j.org.
