0

ここでは、xml ファイルを解析し、内容を配列リストに格納しようとしていますが、2 つのポイントで java.Lang.NullPointerException が発生するたびに、pls はこれをデバッグするのに役立ちます...

public class XML_PARSER extends Activity {

String TAG= "XML_PARSER";
List optionList = new ArrayList(); 
Document dom;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.parser);



    Document doc=parseXmlFile();

この行で、Java null ポインター例外が発生しています

    ParseDocument(doc); 

    //printData();


}
private Document parseXmlFile(){
    DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();

    try {
        DocumentBuilder db = dbf.newDocumentBuilder();
        dom=db.parse("R.raw.options.xml");

    }

    catch(ParserConfigurationException pce){
        pce.printStackTrace();
    }
    catch(SAXException se){
        se.printStackTrace();
    }
    catch(IOException ioe){
        ioe.printStackTrace();
    }
    return dom;

}


private void ParseDocument(Document dom){

この行で同じエラーが発生します

    Element docEle = dom.getDocumentElement();
    Node node;

    NodeList n1= docEle.getElementsByTagName("Option");
    if(n1!=null && n1.getLength()>0){
        for(int i=0;i<n1.getLength();i++){
            node=n1.item(i);

            Element e1=(Element)n1.item(i);

            Option e = getOption(e1,node);

            optionList.add(e);

            }

        }
    }

ここに同じログキャットがあります

07-20 12:21:48.391: E/AndroidRuntime(836): Caused by: java.lang.NullPointerException
07-20 12:21:48.391: E/AndroidRuntime(836):  at com.example.xml_parser.XML_PARSER.ParseDocument(XML_PARSER.java:67)

07-20 12:21:48.391: E/AndroidRuntime(836):  at com.example.xml_parser.XML_PARSER.onCreate(XML_PARSER.java:38)

07-20 12:21:48.391: E/AndroidRuntime(836):  at android.app.Activity.performCreate(Activity.java:5008)

07-20 12:21:48.391: E/AndroidRuntime(836):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)

07-20 12:21:48.391: E/AndroidRuntime(836):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
4

1 に答える 1

1

問題はR.raw.options.xml、有効な URI ではないため、この行dom=db.parse("R.raw.options.xml");ではdom変数が null であることです。null 変数doc(メソッドElement docEle = dom.getDocumentElement();内の行ParseDocument(doc);) のメソッドを使用しようとしているため、NullPointerException. dom=db.parse("valid_URI");methodで有効な URI を渡すと、2 つがなくなりますNullPointerExceptions

編集ここに完全な例があります:

private Document parseXmlFile(){
    DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();

    try {
       DocumentBuilder db = dbf.newDocumentBuilder();
       Resources res = getResources();
       InputStream in = res.openRawResource(R.raw.options);
       dom=db.parse(in); //Here instead of passing the URI string, you pass the input stream of the file.

    }

    catch(ParserConfigurationException pce){
        pce.printStackTrace();
    }
    catch(SAXException se){
        se.printStackTrace();
    }
    catch(IOException ioe){
        ioe.printStackTrace();
    }
    return dom;

}

それが役立つことを願っています。

于 2012-07-20T06:54:36.137 に答える