Core Java| JSP| Servlets| XML| EJB| JEE5| Web Services| J2ME| Glossary| Questions?
  JDO Tutorials
  EAI Articles
  Struts Tutorials
  Java Tutorials
  Java Certification
  Java Applet
Questions
Comments

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

                         

Leave your comment:

Name:

Email:

URL:

Title:

Comments:


Enter Code:

Audio Version
Reload Image
 

Note: Emails will not be visible or used in any way, and are not required. Please keep comments relevant. Any content deemed inappropriate or offensive may be edited and/or deleted.

No HTML code is allowed. Line breaks will be converted automatically. URLs will be auto-linked. Please use BBCode to format your text.

Add This Tutorial To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Join and Excel yourself with our Online instructor led training sessions
Training Courses
Tell A Friend
Your Friend Name

 

 
 

Home | JSP | EJB | JDBC | Java Servlets | WAP  | Free JSP Hosting  | Search Engine | News Archive | Jboss 3.0 tutorial | Free Linux CD's | Forum | Blogs

About Us | Advertising On RoseIndia.net  | Site Map

India News

Indian Software Development Company | iPhone Development Company in India | Flex Development Company in India | Java Training Delhi | Java Training at Noida |

Send your comments, Suggestions or Queries regarding this site at roseindia_net@yahoo.com.

Copyright © 2008. All rights reserved.