исключение нулевого указателя с использованием SAX XML Parser

Я использую SAX Parser для синтаксического анализа XML. Проблема в том, что если я печатаю, то все в порядке. Однако, если я хочу что-то сохранить, я получаю это сообщение об ошибке (с опечатками):

"XML Pasing Excpetion = java.lang.NullPointerException" 

Мой код приведен ниже:

Код парсера:

try {
        /** Handling XML */
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();

        /** Send URL to parse XML Tags */
        URL sourceUrl = new URL(
        "http://50.19.125.224/Demo/VeryGoodSex_and_the_City_S6E6.xml");

        /** Create handler to handle XML Tags ( extends DefaultHandler ) */
        MyXMLHandler myXMLHandler = new MyXMLHandler();
        xr.setContentHandler((ContentHandler) myXMLHandler);
        xr.parse(new InputSource(sourceUrl.openStream()));

    } catch (Exception e) {
        System.out.println("XML Pasing Excpetion = " + e);
    }

Объект для хранения проанализированного XML Информация:

public class ParserObject {

String name=null;
String description=null;
String bitly=null; //single
String productLink=null;//single
String productPrice=null;//single
Vector<String> price=null;
}

Класс обработчика:

static ParserObject[] xmlDataObject = null;

public void endElement(String uri, String localName, String qName)
throws SAXException {


    currentElement = false;


    if (qName.equalsIgnoreCase("title"))
    {
        xmlDataObject[index].name=currentValue;
    }

    else if (qName.equalsIgnoreCase("artist"))
    {
        xmlDataObject[index].artist=currentValue;
    } 

}


public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {


    currentElement = true;

    if (qName.equalsIgnoreCase("allinfo"))
    {
        System.out.println("started");
    }

    else if (qName.equalsIgnoreCase("tags"))
    {
        insideTag=1;
    } 

}

public void characters(char[] ch, int start, int length)
throws SAXException {

    if (currentElement) {
        currentValue = new String(ch, start, length);
        currentElement = false;
    }

}

person user926293    schedule 03.09.2011    source источник
comment
Можете ли вы опубликовать трассировку стека? Добавьте e.printStackTrace(); в свой блок catch, чтобы точно видеть, в чем проблема.   -  person Cameron Skinner    schedule 03.09.2011
comment
спасибо за предложение ... решил проблему.   -  person user926293    schedule 04.09.2011


Ответы (1)


Ваш массив ParserObject, т.е. xmlDataObject, имеет нулевое значение, поэтому он показывает исключение нулевого указателя. Это мой взгляд, и он может быть неправильным, но однажды проверьте его тоже.

person Rocker    schedule 03.09.2011