A Shortcut
import java.io.*;
import org.jdom.*;
import org.jdom.output.XMLOutputter;
public class BaseballTabToXMLShortcut {
public static void main(String[] args) {
Element root = new Element("players");
try {
FileInputStream fin = new FileInputStream(args[0]);
BufferedReader in
= new BufferedReader(new InputStreamReader(fin));
String playerStats;
while ((playerStats = in.readLine()) != null) {
String[] stats = splitLine(playerStats);
Element player = new Element("player");
player.addContent((new Element("first_name")).setText(stats[1]));
player.addContent((new Element("surname")).setText(stats[0]));
player.addContent((new Element("games_played")).setText(stats[4]));
player.addContent((new Element("at_bats")).setText(stats[6]));
player.addContent((new Element("runs")).setText(stats[7]));
player.addContent((new Element("hits")).setText(stats[8]));
player.addContent((new Element("doubles")).setText(stats[9]));
player.addContent((new Element("triples")).setText(stats[10]));
player.addContent((new Element("home_runs")).setText(stats[11]));
player.addContent((new Element("runs_batted_in")).setText(stats[12]));
player.addContent((new Element("stolen_bases")).setText(stats[13]));
player.addContent((new Element("caught_stealing")).setText(stats[14]));
player.addContent((new Element("sacrifice_hits")).setText(stats[15]));
player.addContent((new Element("sacrifice_flies")).setText(stats[16]));
player.addContent((new Element("errors")).setText(stats[17]));
player.addContent((new Element("passed_by_ball")).setText(stats[18]));
player.addContent((new Element("walks")).setText(stats[19]));
player.addContent((new Element("strike_outs")).setText(stats[20]));
player.addContent((new Element("hit_by_pitch")).setText(stats[21]));
root.addContent(player);
}
Document doc = new Document(root);
// serialize it into a file
FileOutputStream fout
= new FileOutputStream("baseballstats.xml");
XMLOutputter serializer = new XMLOutputter();
serializer.output(doc, fout);
fout.flush();
fout.close();
in.close();
}
catch (IOException e) {
System.err.println(e);
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Usage: java BaseballTabToXML input_file.tab");
}
}
public static String[] splitLine(String playerStats) {
// count the number of tabs
int numTabs = 0;
for (int i = 0; i < playerStats.length(); i++) {
if (playerStats.charAt(i) == '\t') numTabs++;
}
int numFields = numTabs + 1;
String[] fields = new String[numFields];
int position = 0;
for (int i = 0; i < numFields; i++) {
StringBuffer field = new StringBuffer();
while (position < playerStats.length()
&& playerStats.charAt(position++) != '\t') {
field.append(playerStats.charAt(position-1));
}
fields[i] = field.toString();
}
return fields;
}
}