Latest Tutorials| Questions and Answers|Ask Questions?|Site Map



Home Apachevelocity XML handling in a template using Velocity

Related Tutorials


 
 

Share on Google+Share on Google+

XML handling in a template using Velocity

Advertisement
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

Advertisement

If you enjoyed this post then why not add us on Google+? Add us to your Circles



Liked it!  Share this Tutorial


Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Posted on: August 27, 2008

Related Tutorials

Discuss: XML handling in a template using Velocity  

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments:0
DMCA.com