skip to main | skip to sidebar

Java Programs and Examples with Output

Pages

▼
 
  • RSS
  • Twitter
Friday, October 19, 2012

Java Program to Split XML to 10 contracts in each

Posted by Raju Gupta at 6:00 AM – 0 comments
 

Given an XML with many contracts, this program will split 10 contracts in each xml in the output.

Here, I have placed a contract in between <Contract> and </Contract> tags. If you have different tags, replace it with the Contract tag.

Example: if your input xml has 104 contracts, the output will be 11 xmls, 10 xmls having 10 contracts each and 11th xml has 4 contracts.  

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;

public class SplitXML {
 public static void main(String [] args) throws Exception {
  double startTime=System.currentTimeMillis();
  int count=0;
  int i=1;
  StringBuffer sb=new StringBuffer();
  StringBuffer str=new StringBuffer();
  
  //Writer output=null;
  String newline = System.getProperty("line.separator"); 
//System.out.println("args[0]========"+args[0]);
//System.out.println("args[1]========"+args[1]);
  FileInputStream fi=new FileInputStream(args[0]);
  BufferedReader br=new BufferedReader(new InputStreamReader(fi));
  String temp,strLine;
  List<String> list=new ArrayList<String>();
  while((temp=br.readLine())!=null)
  {
   if(temp.equals("<CONTRACT>")||temp.equals("<contract>"))
    temp="<Contract>";
   if(temp.equals("</CONTRACT>")||temp.equals("</contract>"))
    temp="</Contract>";
   if(temp.equalsIgnoreCase("<ROOT>")||temp.equalsIgnoreCase("</ROOT>"))
    temp=" ";
  strLine=temp+"n";
  /*if(strLine.equals("<root>"))
   strLine=strLine.replace("<root>", " ");
  if(strLine.equals("</root>"))
   strLine=strLine.replace("</root>", " ");
  if(strLine.equals("</ROOT>"))
   strLine=strLine.replace("</ROOT>", " ");*/
  sb.append(strLine);
  //System.out.println(strLine);
  // if(strLine.equals("contStrTag"))
  // count++;
  if(strLine.contains("</Contract>"))
  {
  // System.out.println("first loop");
  //String data=sb.toString();
  sb.delete(0, sb.length());
  //System.out.println(data);
  //System.out.println("inside iffffffff");
  count++;
  list.add(strLine);
  // sb.delete(0, sb.length());
  }
  }
  // System.out.println("no of contracts=="+count);
  //String temp[] = sb.toString().split("#");
  /* for (int j = 0; j < temp.length; j++)
  {
  System.out.println("second loop");
  System.out.println(temp[j]);
  }*/
  System.out.println("count===="+count);
  int extra=count%10;
  //int tot=count/10;
  //for(String str:list){
  int item=0;
  //String str="";
  
  int tem=0;
  if(list.isEmpty()==false){
  for(i=0;i<list.size();i++)
  { 
    tem++;
  //for(int j=1;j<=10;j++){
  //System.out.println("for each");
  //str=str+list.get(i);
   str.append(list.get(i));
   
  if((i+1) % 10 == 0){
   Writer output = null;
   item++;
   output=new BufferedWriter(new FileWriter(args[1]+"/Life2012_"+item+".xml"));
   System.out.println("file created!!!!");
   output.write("<root>");
   // System.out.println("after root");
   //System.out.println("after root");
   output.write(newline);
   output.write(str.toString());
   //System.out.println(str);
   output.write("</root>");
   output.close();
   str.delete(0, str.length());
  }
  }
  }
  System.out.println("tem value===="+tem);
  if(extra>0){
   /*for(int j=tem;j<list.size();j++){
    str=str+list.get(j);
   }*/
   Writer output = null;
   item++;
   output=new BufferedWriter(new FileWriter(args[1]+"/Life2012_"+item+".xml"));
   System.out.println("file created!!!!");
   output.write("<root>");
   // System.out.println("after root");
   //System.out.println("after root");
   output.write(newline);
   output.write(str.toString());
   output.write("</root>");
   output.close();
   str=null;
  }
  //}
  // }
//System.out.println("args[0]========"+args[0]);
//System.out.println("args[1]========"+args[1]);
System.out.println("total files created=="+item);
  System.out.println("done");
  System.out.println("Total Time Taken:"+(System.currentTimeMillis()-startTime)/1000+" Seconds");
 }
}

Labels: Java XML Example , XML Parsing

Leave a Reply

Newer Post Older Post
Subscribe to: Post Comments ( Atom )
  • Popular
  • Recent
  • Archives
Powered by Blogger.
 
 
 
© 2011 Java Programs and Examples with Output | Designs by Web2feel & Fab Themes

Bloggerized by DheTemplate.com - Main Blogger