{"id":5294,"date":"2014-03-30T20:30:36","date_gmt":"2014-03-30T20:30:36","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/03\/30\/parsing-xml-with-xmlpullparserfactory-is-crashing-in-while-statement-collection-of-common-programming-errors\/"},"modified":"2014-03-30T20:30:36","modified_gmt":"2014-03-30T20:30:36","slug":"parsing-xml-with-xmlpullparserfactory-is-crashing-in-while-statement-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2014\/03\/30\/parsing-xml-with-xmlpullparserfactory-is-crashing-in-while-statement-collection-of-common-programming-errors\/","title":{"rendered":"Parsing XML with XmlPullParserFactory is crashing in while statement-Collection of common programming errors"},"content":{"rendered":"<p>I am using a <code>XmlPullParserFactory<\/code> object to parse some <code>XML<\/code> that I receive from my server. For some reason it crashes at the <code>while<\/code> statement and I can&#8217;t figure out why that would happen.<\/p>\n<p>XML:<\/p>\n<pre><code>\n\n\n  115240\n  \n    \n  \n  20130821-15:50\n  \n    \n  \n  \n    \n  \n  \n    On August 21, Service, Justice, and Missions Coordinator\n      Fabio Maia and ten Pacific Union College students left for an eighteen-day\n      evangelism mission in Fiji with ShareHim and Quiet Hour Ministries. Each\n      student will be placed in a specific community where they will present the\n      story of Christ's love and sacrifice each evening. Many of the students are\n      active in the college's praise and worship teams and brought their instruments\n      so they can share God's love through music.<br \/><br \/>\n      <br \/>Before the group departed, the students gathered in\n      President Heather J. Knight's office for a special blessing prayer led by\n      Pastor Mark Witas, the lead pastor of the PUC Church. Pastor Witas included\n      special prayer that God lead the group in doing good in His name. The group also\n      bonded by sharing a meal together before heading to the airport for their\n      flight to Fiji.<br \/><br \/>\n      <br \/>For many PUC students, summer is the perfect opportunity to\n      devote time to ministry and service. While some students work at summer camps\n      or serve as literature evangelists, other groups get the experience of a\n      lifetime by sharing the gospel and serving local communities in places around\n      the world. The PUC community is invited to join in prayer for the team travelling\n      to Fiji as well as other student groups currently on short-term mission trips\n      to Nicaragua and Brazil.<br \/><br \/>]]&gt;\n  \n  http:\/\/www.puc.edu\/news\/archives\/2013\/student-evangelism-team-leaves-for-fiji\n  \n    \n  \n  \n... lots more item nodes\n\n<\/code><\/pre>\n<p>Java:<\/p>\n<pre><code>class PUCNewsItem\n{\n\n    public String title;\n    public String summary;\n    public String body;\n    public String url;\n    public String imageUrl;\n\n}\n\npublic class PUCDatasource extends Activity {\n\n    public static ArrayList getPUCNews() throws IOException {\n\n            String url = \"http:\/\/api.mysite.com\/list\";\n            InputStream is = downloadUrl(url);\n            XmlPullParserFactory pullParserFactory;\n\n            try {\n                pullParserFactory = XmlPullParserFactory.newInstance();\n                XmlPullParser parser = pullParserFactory.newPullParser();\n                parser.setInput(is, null);\n\n                ArrayList items = null;\n                int eventType = parser.getEventType();\n                PUCNewsItem item = null;\n                Log.d(\"Debug: \", \"Start\");\n                while (eventType != XmlPullParser.END_DOCUMENT){\n                    String name = null;\n                    switch (eventType){\n                        case XmlPullParser.START_DOCUMENT:\n                            Log.d(\"Debug: \", \"Start doc\");\n                            items = new ArrayList();\n                            break;\n                        case XmlPullParser.START_TAG:\n                            name = parser.getName();\n                            if (name == \"item\"){\n                                item = new PUCNewsItem();\n                            } else if (item != null){\n                                if (name == \"title\"){\n                                    item.title = parser.nextText();\n                                } else if (name == \"summary\"){\n                                    item.summary = parser.nextText();\n                                } else if (name == \"body_text\"){\n                                    item.body = parser.nextText();\n                                }  \n                            }\n                            break;\n                        case XmlPullParser.END_TAG:\n                            name = parser.getName();\n                            if (name.equalsIgnoreCase(\"item\") &amp;&amp; item != null) {\n                                items.add(item);\n                            }\n                            break;\n                    }\/\/end switch\n\n                    eventType = parser.next();\n\n                }\/\/end while\n\n                return items;\n\n            } catch (XmlPullParserException e) {\n                e.printStackTrace();\n            } catch (IOException e) {\n                \/\/ TODO Auto-generated catch block\n                e.printStackTrace();\n            }\n\n            return null;\n\n        }\/\/end\n\n}\/\/end class\n<\/code><\/pre>\n<p>Errors:<\/p>\n<pre><code>09-03 16:31:50.100: W\/System.err(16727): Invalid stream or encoding: java.io.IOException: Stream is closed (position:START_DOCUMENT null@1:1) caused by: java.io.IOException: Stream is closed; nested exception is:\n09-03 16:31:50.108: W\/System.err(16727): java.io.IOException: Stream is closed\n09-03 16:31:50.108: W\/System.err(16727):    at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:158)\n09-03 16:31:50.108: W\/System.err(16727):    at libcore.io.Streams.readSingleByte(Streams.java:41)\n09-03 16:31:50.108: W\/System.err(16727):    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:128)\n09-03 16:31:50.108: W\/System.err(16727):    at org.kxml2.io.KXmlParser.setInput(KXmlParser.java:1623)\n09-03 16:31:50.108: W\/System.err(16727):    at com.puc.mobile.PUCDatasource.getPUCNews(PUCDatasource.java:40)\n09-03 16:31:50.108: W\/System.err(16727):    at com.puc.mobile.MainActivity$DownloadPUCNews.doInBackground(MainActivity.java:94)\n09-03 16:31:50.108: W\/System.err(16727):    at com.puc.mobile.MainActivity$DownloadPUCNews.doInBackground(MainActivity.java:1)\n09-03 16:31:50.108: W\/System.err(16727):    at android.os.AsyncTask$2.call(AsyncTask.java:264)\n09-03 16:31:50.108: W\/System.err(16727):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)\n09-03 16:31:50.108: W\/System.err(16727):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)\n09-03 16:31:50.108: W\/System.err(16727):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)\n09-03 16:31:50.108: W\/System.err(16727):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)\n09-03 16:31:50.108: W\/System.err(16727):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)\n09-03 16:31:50.108: W\/System.err(16727):    at java.lang.Thread.run(Thread.java:856)\n09-03 16:31:50.108: D\/AndroidRuntime(16727): Shutting down VM\n09-03 16:31:50.108: W\/dalvikvm(16727): threadid=1: thread exiting with uncaught exception (group=0x40aba210)\n09-03 16:31:50.108: E\/AndroidRuntime(16727): FATAL EXCEPTION: main\n09-03 16:31:50.108: E\/AndroidRuntime(16727): java.lang.NullPointerException\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at com.puc.mobile.MainActivity$DownloadPUCNews.onPostExecute(MainActivity.java:103)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at com.puc.mobile.MainActivity$DownloadPUCNews.onPostExecute(MainActivity.java:1)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at android.os.AsyncTask.finish(AsyncTask.java:602)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at android.os.AsyncTask.access$600(AsyncTask.java:156)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at android.os.Handler.dispatchMessage(Handler.java:99)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at android.os.Looper.loop(Looper.java:137)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at android.app.ActivityThread.main(ActivityThread.java:4697)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at java.lang.reflect.Method.invokeNative(Native Method)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at java.lang.reflect.Method.invoke(Method.java:511)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)\n09-03 16:31:50.108: E\/AndroidRuntime(16727):    at dalvik.system.NativeStart.main(Native Method)\n<\/code><\/pre>\n<p>Any ideas on why the crash is happening? Should I somehow be specifying the name of my roote node?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I am using a XmlPullParserFactory object to parse some XML that I receive from my server. For some reason it crashes at the while statement and I can&#8217;t figure out why that would happen. XML: 115240 20130821-15:50 On August 21, Service, Justice, and Missions Coordinator Fabio Maia and ten Pacific Union College students left for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5294","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/5294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=5294"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/5294\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=5294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=5294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=5294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}