Java 蜂窝状XML解析错误
我有一个XML文件正在被DocumentBuilder解析,它可以在手机上正确解析,但平板电脑会抛出一个异常。我一直在阅读,有人建议使用AsyncTask,我已经实现了它,但它仍然没有解析。有没有人知道这个问题,或者需要做些什么来解决它。下面是我的代码 异步任务Java 蜂窝状XML解析错误,java,android,xml-parsing,android-3.0-honeycomb,stringbuilder,Java,Android,Xml Parsing,Android 3.0 Honeycomb,Stringbuilder,我有一个XML文件正在被DocumentBuilder解析,它可以在手机上正确解析,但平板电脑会抛出一个异常。我一直在阅读,有人建议使用AsyncTask,我已经实现了它,但它仍然没有解析。有没有人知道这个问题,或者需要做些什么来解决它。下面是我的代码 异步任务 @Override protected void onCreate(Bundle savedInstanceState) { DownloadWebPageTask task = new DownloadWebPageTask(); t
@Override
protected void onCreate(Bundle savedInstanceState) {
DownloadWebPageTask task = new DownloadWebPageTask();
task.execute(new String[] { "url" });
}
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
//String response = "";
for (String url : urls) {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
HttpResponse responseGet = null;
try {
responseGet = httpclient.execute(httpget);
final int status = responseGet.getStatusLine().getStatusCode();
if (status != HttpStatus.SC_OK) {
// give message
// Log.i("Error", "No Connection");
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//Log.i("caught error","ClientException");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
// Log.i("caught error","IOException");
}
//String responseBody = null;
try {
responseBody = EntityUtils.toString(responseGet.getEntity());
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
// Log.i("caught error","ClientException");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
// Log.i("caught error","IOException");
}
}
return responseBody;
}
这是我的堆栈跟踪结果:
01-31 09:50:07.541: W/System.err(21462): java.lang.NullPointerException
01-31 09:50:07.541: W/System.err(21462): at com.mlgw.map.MainActivity2$DownloadWebPageTask.onPostExecute(MainActivity2.java:381)
01-31 09:50:07.541: W/System.err(21462): at com.mlgw.map.MainActivity2$DownloadWebPageTask.onPostExecute(MainActivity2.java:1)
01-31 09:50:07.541: W/System.err(21462): at android.os.AsyncTask.finish(AsyncTask.java:590)
01-31 09:50:07.541: W/System.err(21462): at android.os.AsyncTask.access$600(AsyncTask.java:149)
01-31 09:50:07.541: W/System.err(21462): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:603)
01-31 09:50:07.541: W/System.err(21462): at android.os.Handler.dispatchMessage(Handler.java:99)
01-31 09:50:07.541: W/System.err(21462): at android.os.Looper.loop(Looper.java:132)
01-31 09:50:07.541: W/System.err(21462): at android.app.ActivityThread.main(ActivityThread.java:4129)
01-31 09:50:07.551: W/System.err(21462): at java.lang.reflect.Method.invokeNative(Native Method)
01-31 09:50:07.551: W/System.err(21462): at java.lang.reflect.Method.invoke(Method.java:491)
01-31 09:50:07.551: W/System.err(21462): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:855)
01-31 09:50:07.551: W/System.err(21462): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:613)
01-31 09:50:07.551: W/System.err(21462): at dalvik.system.NativeStart.main(Native Method)
看起来发生在381行,这是我的坐标,它在手机上工作正常,但在平板电脑上得到空值
如果您对需要添加或更改的内容有任何建议,我们将不胜感激。我找到了问题的解决方案。我基本上必须重做存储数据的循环。不知道为什么原来的方式适用于手机而不是平板电脑。Node Node=ProfileNode.itemgd NodeList NodeList=node.getChildNodes
字符串名称=节点nodeList.item0.getNodeValue MainActivity2.java:381,381的哪一行?对不起,381行是Element nameE=Element nameL.item0;nameL=nameE.getChildNodes;代码的一部分,所以这里的nameL似乎是空的。是否已检查此fstElement.getElementsByTagNamecoords;返回空值?@是的,它返回空值,但仅适用于平板电脑,在手机上按计划工作。
<Section>
<custcount>3</custcount>
<location>
<coords>35.25010,-90.08342</coords>
<coords>35.29177,-90.08342</coords>
<coords>35.29177,-90.04175</coords>
<coords>35.25010,-90.04175</coords>
<coords>35.25010,-90.08342</coords>
</location>
</Section>
<Section>
<custcount>3</custcount>
<location>
<coords>35.25040,-90.08342</coords>
<coords>35.29477,-90.08342</coords>
<coords>35.29477,-90.04173</coords>
<coords>35.25010,-90.04175</coords>
<coords>35.25010,-90.08342</coords>
</location>
</Section>
01-31 09:50:07.541: W/System.err(21462): java.lang.NullPointerException
01-31 09:50:07.541: W/System.err(21462): at com.mlgw.map.MainActivity2$DownloadWebPageTask.onPostExecute(MainActivity2.java:381)
01-31 09:50:07.541: W/System.err(21462): at com.mlgw.map.MainActivity2$DownloadWebPageTask.onPostExecute(MainActivity2.java:1)
01-31 09:50:07.541: W/System.err(21462): at android.os.AsyncTask.finish(AsyncTask.java:590)
01-31 09:50:07.541: W/System.err(21462): at android.os.AsyncTask.access$600(AsyncTask.java:149)
01-31 09:50:07.541: W/System.err(21462): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:603)
01-31 09:50:07.541: W/System.err(21462): at android.os.Handler.dispatchMessage(Handler.java:99)
01-31 09:50:07.541: W/System.err(21462): at android.os.Looper.loop(Looper.java:132)
01-31 09:50:07.541: W/System.err(21462): at android.app.ActivityThread.main(ActivityThread.java:4129)
01-31 09:50:07.551: W/System.err(21462): at java.lang.reflect.Method.invokeNative(Native Method)
01-31 09:50:07.551: W/System.err(21462): at java.lang.reflect.Method.invoke(Method.java:491)
01-31 09:50:07.551: W/System.err(21462): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:855)
01-31 09:50:07.551: W/System.err(21462): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:613)
01-31 09:50:07.551: W/System.err(21462): at dalvik.system.NativeStart.main(Native Method)