XML handling in a template using Velocity
This Example shows you how to use XML file in a velocity template and also shows that use of macro to wrap HTML tag in velocity template.
This Example shows you how to use XML file in a velocity template and also shows that use of macro to wrap HTML tag in velocity template.
XML handling in a template using Velocity

This Example shows you
how
to use XML file in a velocity template and
also shows that use of macro to wrap HTML tag in
velocity
template. The method
used in this example are
described below:-
1:- Initialize velocity run
time
engine through method init().
2:- Create object of
VelocityContext Class.
3:- Create Template
class object, Template
class object is used for
controlling template methods and properties.
template.merge(context, writer): Merge method of the Template class
is used here for
merging the VelocityContext class object to produce
the output.
#macro ( recursive $e $indent ): This is the method for creating function in
.vm
file.
#recursive( $root.getRootElement() $i ): This is used to
call recursive function that we have already created.
XMLHandling.java
package velocity.XML;
import java.io.*;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.jdom.Document;
import org.jdom.input.SAXBuilder;
public class XMLHandling {
public static void main(String args[]) {
try {
Velocity.init();
SAXBuilder builder;
Document root = null;
try {
builder =
new SAXBuilder("org.apache.xerces.parsers.SAXParser");
root = builder.build("./src/velocity/XML/handling.xml");
} catch (Exception e) {
System.out.println(e);
}
VelocityContext context = new VelocityContext();
context.put("root", root);
Template template =
Velocity.getTemplate("./src/velocity/XML/handling.vm");
StringWriter writer = new StringWriter();
template.merge(context, writer);
System.out.println(writer);
} catch (Exception e) {
System.out.println(e);
}
}
}
|
handling.xml
<?xml version="1.0" encoding="UTF-8"?>
<document>
<student>
<rno>1</rno>
<name>Komal</name>
</student>
<student>
<rno>2</rno>
<name>Sandy</name>
</student>
<student>
<rno>3</rno>
<name>Ajay</name>
</student>
</document>
|
ClassMethods.vm
#macro (
recursive $e $indent )
#if( $e.getChildren().size() > 0 )
$indent <$e.getName()>
#foreach ($child in $e.getChildren() )
#recursive( $child "$indent " )
#end
$indent </$e.getName()>
#else
$indent <$e.getName()>
$indent $e.getTextTrim()
$indent </$e.getName()>
#end
#end
#set($i = " ")
Handling.xml
#recursive( $root.getRootElement() $i )
Data directly :
Rno :
$root.getRootElement()
.getChild("student").getChild("rno").getText()
Name :
$root.getRootElement()
.getChild("student").getChild("name").getText()
|
Output :
Handling.xml
<document>
<student>
<rno>1</rno>
<name>Komal</name>
</student>
<student>
<rno>2</rno>
<name>Sandy</name>
</student>
<student>
<rno>3</rno>
<name>Ajay</name>
</student>
</document>
Data directly :
Rno : 1
Name : Komal |
Download code
Ads