使用 SAX XML 解析器时出现空指针异常

发布于 2024-12-02 21:46:52 字数 2095 浏览 2 评论 0 原文

我正在使用 SAX 解析器进行 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;
    }

}

I am using the SAX Parser for XML Parsing. The problem is if I print, everything is fine. However, If I want to save anything, I get this error message (with the typos):

"XML Pasing Excpetion = java.lang.NullPointerException" 

My code is given below:

Parser code:

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);
    }

Object to hold XML parsed Info:

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;
}

Handler class:

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;
    }

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

や三分注定 2024-12-09 21:46:52

您的 ParserObject 数组(即 xmlDataObject)具有空值,这就是它显示空指针异常的原因。这是我的观点,可能是错误的,但也检查一下。

Your ParserObject array i.e xmlDataObject is having null value thats is why it is showing null pointer exception. This is my View and it might be wrong but once check it too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文