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

Използвам SAX Parser за XML Parsing. Проблемът е, че ако отпечатам, всичко е наред. Въпреки това, ако искам да запазя нещо, получавам това съобщение за грешка (с правописни грешки):

"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