-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

使用する前にタイトル Vector を初期化しませんでした。

SearchParse コンストラクターに以下を追加する必要があります。

タイトル = new Vector();

于 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();

これらの例外をキャッチせずに、nullのみの変数を引き続き使用してください。例外を処理する方法がない場合は、それらをキャッチ(またはキャッチして再スロー)してはなりません。

于 2010-03-08T01:55:43.387 に答える