Google

Jul 30, 2014

Java and XML tutorial with StAX parser - writing cursor based and iterator based



package com.xml;

import java.math.BigDecimal;

import org.springframework.core.style.ToStringStyler;

public class Employee {
 private String name;
 private String type;
 private int age;
 private BigDecimal salary;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getType() {
  return type;
 }
 public void setType(String type) {
  this.type = type;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public BigDecimal getSalary() {
  return salary;
 }
 public void setSalary(BigDecimal salary) {
  this.salary = salary;
 }
 
 @Override
 public String toString() {
  StringBuilder sb = new StringBuilder();
  sb.append("name=" + name);
  sb.append("\n");
  if(type != null) {
   sb.append("type=" + type + "\n");
  }
  sb.append("age=" + age);
  return sb.toString();
 }
}


Here is a simple example to write employee object to XML using simpler cursor based approach.

package com.xml;

import java.io.StringWriter;
import java.math.BigDecimal;

import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

public class StaxProcessing {

 public static void main(String[] args) {

  XMLOutputFactory factory = XMLOutputFactory.newInstance();

  // construct employee object
  Employee emp = new Employee();
  emp.setName("Peter");
  emp.setType("first");
  emp.setAge(25);
  emp.setSalary(BigDecimal.valueOf(35000.00));

  StringWriter sw = new StringWriter();

  try {
   XMLStreamWriter writer = factory.createXMLStreamWriter(sw);
   writer.writeStartDocument();
   writer.writeStartElement("Employee");
   writer.writeStartElement("name");
   writer.writeAttribute("type", "first");
   writer.writeCharacters(emp.getName());
   writer.writeEndElement();
   writer.writeStartElement("age");
   writer.writeCharacters(new Integer(emp.getAge()).toString());
   writer.writeEndElement();
   writer.writeStartElement("salary");
   writer.writeCharacters(emp.getSalary().toString());
   writer.writeEndElement();
   writer.writeEndElement();

   System.out.println(sw.getBuffer().toString());

  } catch (XMLStreamException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }
}


Output:

<?xml version="1.0" ?>
<Employee><name type="first">Peter</name><age>25</age><salary>35000.0</salary></Employee>


Here is a simple example to write employee object to XML using simpler iterator based approach.

package com.xml;

import java.io.StringWriter;
import java.math.BigDecimal;

import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;

public class StaxProcessing {

 public static void main(String[] args) {

  XMLOutputFactory factory = XMLOutputFactory.newInstance();
  XMLEventFactory eventFactory = XMLEventFactory.newInstance();

  // construct employee object
  Employee emp = new Employee();
  emp.setName("Peter");
  emp.setType("first");
  emp.setAge(25);
  emp.setSalary(BigDecimal.valueOf(35000.00));

  StringWriter sw = new StringWriter();

  try {
   XMLEventWriter writer = factory.createXMLEventWriter(sw);
   XMLEvent event = eventFactory.createStartDocument();
   writer.add(event);

   // employee
   event = eventFactory.createStartElement("", "", "Employee");
   writer.add(event);

   // name
   event = eventFactory.createStartElement("", "", "name");
   writer.add(event);
   event = eventFactory.createAttribute("type", "first");
   writer.add(event);
   event = eventFactory.createCharacters(emp.getName());
   writer.add(event);
   event = eventFactory.createEndElement("", "", "name");
   writer.add(event);

   // age
   event = eventFactory.createStartElement("", "", "age");
   writer.add(event);
   event = eventFactory.createCharacters(new Integer(emp.getAge()).toString());
   writer.add(event);
   event = eventFactory.createEndElement("", "", "age");
   writer.add(event);

   // salary
   event = eventFactory.createStartElement("", "", "salary");
   writer.add(event);
   event = eventFactory.createCharacters(emp.getSalary().toString());
   writer.add(event);
   event = eventFactory.createEndElement("", "", "salary");
   writer.add(event);

   // close employee
   event = eventFactory.createEndElement("", "", "Employee");
   writer.add(event);

   writer.flush();
   writer.close();

   System.out.println(sw.getBuffer().toString());

  } catch (XMLStreamException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }
}


Output:

<?xml version="1.0" ?>
<Employee><name type="first">Peter</name><age>25</age><salary>35000.0</salary></Employee>

Labels:

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home