File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes XML and Related Technologies and the fly likes Parsing xml file using sax parser-NULLPOINTEREXCEPTION Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of OCA Java SE 8 Programmer I Study Guide 1Z0-808 this week in the OCAJP forum!
JavaRanch » Java Forums » Engineering » XML and Related Technologies
Bookmark "Parsing xml file using sax parser-NULLPOINTEREXCEPTION" Watch "Parsing xml file using sax parser-NULLPOINTEREXCEPTION" New topic

Parsing xml file using sax parser-NULLPOINTEREXCEPTION

Bhasker Reddy
Ranch Hand

Joined: Jun 13, 2000
Posts: 176
I need to parse a text file, text file has different records(each record has multiple rows). I need to pass insert these values into tables.
I created a xml format for the test file. I need to parse this xmlfile and load into a TestParser object. Based on this format I need to parse the text files.
the format of xml file(employeeformat.xml) is
<!--AP Invoice Record EBD Entity-->
<map name="xyz" delimiter="|" RecordType="00" TableName="EMPLOYEE">
<field name = "name" order_id = "1"column_name="EMPLOYEE.NAME" />
<field name = "address" order_id = "2" column_name="EMPLOYEE.ADDRESS" />
<field name = "state" order_id = "3" column_name="EMPLOYEE.STATE" />
<field name = "country" order_id = "4" column_name="EMPLOYEE.COUNTRY" />
<field name = "phoneno" order_id = "5" column_name="EMPLOYEE.PHONENO" />
<field name = "email" order_id = "6" column_name="EMPLOYEE.EMAIL" />
<field name = "age" order_id = "7" column_name="EMPLOYEE.AGE" />
<field name = "sex" order_id = "8" column_name="EMPLOYEE.SEX" />
<field name = "buyer" order_id = "9" column_name="EMPLOYEE.BUYER" />
<field name = "seller" order_id = "10" column_name="EMPLOYEE.SELLER" />

The code I am using to parse this is
import java.util.*;

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.SAXParserFactory;
import org.apache.xerces.parsers.SAXParser;

public class Testparser extends DefaultHandler {
private static Testparser myself = null;
/** XML Parser Class */
public static final String
DEFAULT_PARSER_NAME = "org.apache.xerces.parsers.SAXParser";
/** XML source file to be parsed */
private String xmlsource = "C:/employeeformat.xml";
/** map list */
private HashMap mapList = null;

private static String MAP_ELEMENT = "map";
public static String MAP_NAME_ATTR = "name";
public static String RECORD_TYPE_ATTR = "RecordType";
public static String TABLE_NAME_ATTR = "TableName";
public static String DELIMITER_TYPE_ATTR = "delimiter";
private static String FIELD_ELEMENT = "field";
public static String FIELD_NAME_ATTR = "name";
public static String FIELD_LIST_ATTR = "fieldList";
public static String COLUMN_ATTR = "column_name";
public static String COLUMN_LIST_ATTR = "columnList";
public static String ORDER_ID_ATTR = "order_id";
public static String ORDER_ID_LIST = "orderidList";
private StringBuffer buffer = null; //xml buffer
private String mapName = null; //map name
private HashMap tableProps = null; //table props currently being parsed
private ArrayList fieldList = null; //field list currently being parsed
private HashMap fieldProps = null; //field props currently being parsed
private ArrayList columnList = null;
private ArrayList orderidList = null;
* Constructor
private TestParser() {
System.out.println("I am here");

* Constructor that takes a xml file to parse
private TestParser(String xml) {
this.xmlsource = xml;
// this.xmlsource = Globals.TestParserXMLFile;
// parse();
/* public static void main(String[] args) throws Exception {
System.out.println("I am in TestPArser main method");
TestParser DataEntity1 = new TestParser();
} */
* returns instance of this class
public synchronized static TestParser getInstance() {
if (myself == null) {
myself = new TestParser();
return myself;
public static void main(String[] args) throws Exception {

XMLReader p = XMLReaderFactory.createXMLReader( "org.apache.xerces.parsers.SAXParser" );
System.out.println("I am in parse method");
* gets file props for alias
public synchronized HashMap get(String alias) {
return (HashMap)mapList.get(alias);

* Start document
public synchronized void startDocument() {
mapList = new HashMap();
* Start element.
public synchronized void startElement(String name, Attributes attrs) {
buffer = new StringBuffer();
// if map element, create new field list, reset delimiter, and get map props
if (name.equals(MAP_ELEMENT)) {
tableProps = new HashMap();
fieldList = new ArrayList();
mapName = (String)attrs.getValue(MAP_NAME_ATTR);
tableProps.put(TABLE_NAME_ATTR, (String)attrs.getValue(TABLE_NAME_ATTR));
// if field element, create new field props and get field props
else if (name.equals(FIELD_ELEMENT)) {
fieldProps = new HashMap();
* Characters.
public synchronized void characters(char ch[], int start, int length) {
buffer.append(ch, start, length);
* End element.
public synchronized void endElement(String name) {
String value = buffer.toString().trim();
// if table element, add table props to map list
if (name.equals(MAP_ELEMENT)) {
// if field element, add field props to field list
// add field list to map props
else if (name.equals(FIELD_ELEMENT)) {
The problem is i am getting null pointer exception when i am using this code. Do you guys
have any idea why I am getting null pointer exception. Do you have better way of parsing the xml files.
Ranch Hand

Joined: Nov 22, 2008
Posts: 18944
Your source code does not even compile
It is sorta covered in the JavaRanch Style Guide.
subject: Parsing xml file using sax parser-NULLPOINTEREXCEPTION