gpt4 book ai didi

java - 在第 "ParseDocument(doc)"和 "Element docEle = dom.getDocumentElement();"行获取 java.Lang.NULLPOINTEREXCEPTION

转载 作者:行者123 更新时间:2023-12-01 15:16:10 25 4
gpt4 key购买 nike

这里我只是想解析一个xml文件并将内容存储在数组列表中,但是每次它在两个点上给出java.Lang.NullPointerException,请帮助调试这个...

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空指针异常

    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)

最佳答案

问题是 R.raw.options.xml 不是有效的 URI,因此在这一行中 dom=db.parse("R.raw.options.xml"); dom 变量为空。您正在尝试使用空变量 doc 的方法(ParseDocument(doc); 内的 Element docEle = dom.getDocumentElement(); 行方法),这就是为什么你会得到一个 NullPointerException 。如果您在 dom=db.parse("valid_URI"); 方法中传递有效的 URI,您将消除两个 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;

}

希望有帮助。

关于java - 在第 "ParseDocument(doc)"和 "Element docEle = dom.getDocumentElement();"行获取 java.Lang.NULLPOINTEREXCEPTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com