Package org.objectweb.asm.xml
Provides
SAX 2.0 adapters for ASM
visitors that can be used to convert bytecode to and from XML.
Provides
SAX 2.0 adapters for ASM
visitors that can be used to convert bytecode to and from XML.
These adapters can be chained with other SAX compliant content handlers and
filters, eg. XSLT or XQuery engines. This package is bundled as
a separate
asm-xml.jar library and requires
asm.jar.
ASMContentHandler and
SAXClassAdapter/SAXCodeAdapter
are using
asm-xml.dtd.
Here is the example of bytecode to bytecode XSLT transformation.
SAXTransformerFactory saxtf = ( SAXTransformerFactory) TransformerFactory.newInstance();
Templates templates = saxtf.newTemplates( xsltSource);
TransformerHandler handler = saxtf.newTransformerHandler( templates);
handler.setResult( new SAXResult( new ASMContentHandler( outputStream, computeMax)));
ClassReader cr = new ClassReader( bytecode);
cr.accept( new SAXClassAdapter( handler, cr.getVersion(), false), false);
See JAXP and SAX documentation for more detils.
There are few illustrations of the bytecode transformation with XSLT in
examples directory. The following XSLT procesors has been tested.
Engine
| javax.xml.transform.TransformerFactory property
|
---|
jd.xslt | jd.xml.xslt.trax.TransformerFactoryImpl |
Saxon | net.sf.saxon.TransformerFactoryImpl |
Caucho | com.caucho.xsl.Xsl |
Xalan interpeter | org.apache.xalan.processor.TransformerFactory |
Xalan xsltc | org.apache.xalan.xsltc.trax.TransformerFactoryImpl |