O'Reilly logo

Jakarta Commons Cookbook by Timothy M. O'Brien

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required