6.5. Variable Substitution and XML Parsing
Problem
You need to parse XML that contains references to variables, and you need to replace these references with variable values at parse time.
Solution
Use Commons Digester’s
MultiVariableExpander
and the
VariableSubstitutor
to expand variable references in an XML document during a parse.
Warning
This recipe explores a feature of Commons Digester—variable substitution—which is available only with a prerelease version of Digester, 1.6-dev. To follow the example in this recipe, you must download a nightly snapshot distribution from http://cvs.apache.org/builds/jakarta-commons/nightly/. Use nightly distributions of Commons components at your own risk; these distributions may contain unresolved bugs.
The following XML document contains four variable
references—${email.to}
,
${order.id}
, ${user.name}
,
and ${product.name}—
all of which need to
be replaced with values before the XML is parsed by the
Digester
:
<?xml version="1.0"?> <email to="${email.to}" from="ceo@xyzblah.com"> <subject>Purchase Confirmation: ${order.id}</subject> <priority>High</priority> <message> Dear ${user.name}, we appreciate your business. As CEO of Big Software Company, Inc., I would like to personally thank you for helping us become filthy rich. Your purchase of ${product.name} helped me purchase an even larger boat for myself. Thanks again. </message> </email>
This document represents a purchase confirmation message, and your system needs to unmarshall the above message ...
Get Jakarta Commons Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.