Smooks is an extensible framework for building applications for processing XML and non XML data (CSV, EDI, Java etc) using Java...
While Smooks can be used as a lightweight platform on which to build your own custom processing logic (for a wide range of data formats "out of the box"), it comes with some very useful features that can be used individually, or seamlessly combined together.