-1

在尝试将值存储到我的向量中时,我不断收到 java.lang.NullPointerException。这是 XML 文档:

<?xml version="1.0" standalone="yes"?>
<autocomplete>
  <autocomplete_item>
    <title short="Forrest Gump"></title>
  </autocomplete_item>
  <autocomplete_item>
    <title short="Forrest Landis"></title>
  </autocomplete_item>
  <autocomplete_item>
    <title short="Finding Forrester"></title>
  </autocomplete_item>
  <autocomplete_item>
    <title short="Menotti: The Medium: Maureen Forrester"></title>
  </autocomplete_item>
</autocomplete>

这是我更新的代码:

import java.util.Vector;

import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;

public class SearchParse extends DefaultHandler {

    Vector titles;

    public SearchParse() {
    }

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

        int length = attributes.getLength();

        for (int i = 0; i < length; i++) {
            String value = attributes.getValue(i);
            titles.addElement(value);
        }
    }

    public Vector getTitles() {
        return titles;
    }

}

NullPointerException 发生在以下行:

titles.addElement(value);

有人知道为什么是这样吗?谢谢!

4

2 回答 2

3

您在使用它之前没有初始化titles Vector。

您需要在 SearchParse 构造函数中添加以下内容:

标题 = 新向量();

于 2010-03-10T04:47:41.947 回答
1

我们需要堆栈跟踪,但这种编码模式会给你带来麻烦

    DocumentBuilder docBuilder = null;
    try {
        docBuilder = docBuilderFactory.newDocumentBuilder();
    } catch (ParserConfigurationException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    docBuilder.isValidating();

不要捕获任何这些异常,然后继续使用只能为空的变量。如果您无法处理异常,则不得捕获它们(或捕获并重新抛出它们)。

于 2010-03-08T01:55:43.387 回答