1

I'm trying to parse a web service response using SAXParser and get certain values, store them into an arraylist, then display them in a listview.

Example XML being returned from web service:

<ArrayOfStrings> <string>value</string> <string>value</string> <string>value</string> </ArrayOfStrings>

Here is my SAXHandler class:

public class SAXHandler extends DefaultHandler {

 private boolean outertag = false;
 private boolean mytag = false;
 ArrayList<String> alist;



 public ArrayList<String> getList(){
  return this.alist;
 }

 @Override
 public void startDocument() throws SAXException {
         }
 @Override
 public void endDocument() throws SAXException{

 }


 //@Override
      public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
 if (localName.equals("ArrayOfString")){
  this.outertag=true;
 }else if (localName.equals("string")){
  this.mytag=true;
 }

         }

 @Override 
    public void characters(char ch[], int start, int length) {
  if (this.mytag){
   String s = new String(ch, start, length);
   alist.add(s);
  }

    }


 @Override
      public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
  if (localName.equals("ArrayOfString")){
   this.outertag=false;
  }else if (localName.equals("string")){
   this.mytag=false;
  }

         }
}

And here's my method calling and returing my web service:

try{
  URL url = new URL("xxxxxxx");

  SAXParserFactory spf = SAXParserFactory.newInstance();
     SAXParser sp = spf.newSAXParser();
     XMLReader xr = sp.getXMLReader();
     SAXHandler SAXHandler =  new SAXHandler();
     xr.setContentHandler(SAXHandler);
     xr.parse(new InputSource(url.openStream()));
     ArrayList<String> stateList = SAXHandler.getList();
     aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, stateList);
     RESTlist.setAdapter(aa);

I keep getting an exception and i don't know why. Can anyone give me a hand?

Logcat:

06-21 20:10:47.901: ERROR/AndroidRuntime(472): Uncaught handler: thread main exiting due to uncaught exception
06-21 20:10:47.950: ERROR/AndroidRuntime(472): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pa.passammain/com.pa.passammain.RESTtest}: java.lang.NullPointerException: println needs a message
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.app.ActivityThread.access$2100(ActivityThread.java:116)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.os.Looper.loop(Looper.java:123)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.app.ActivityThread.main(ActivityThread.java:4203)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at java.lang.reflect.Method.invokeNative(Native Method)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at java.lang.reflect.Method.invoke(Method.java:521)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at dalvik.system.NativeStart.main(Native Method)
06-21 20:10:47.950: ERROR/AndroidRuntime(472): Caused by: java.lang.NullPointerException: println needs a message
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.util.Log.println(Native Method)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.util.Log.e(Log.java:208)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at com.pa.passammain.RESTtest.onCreate(RESTtest.java:82)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
06-21 20:10:47.950: ERROR/AndroidRuntime(472):     ... 11 more

After editing how my error is displayed in my try/catch i'm not longer getting an exception, but just a blank screen. Here is what my logcat is displaying:

06-21 20:22:00.330: WARN/System.err(542): java.lang.NullPointerException
06-21 20:22:00.352: WARN/System.err(542):     at com.pa.passammain.SAXHandler.characters(SAXHandler.java:45)
06-21 20:22:00.352: WARN/System.err(542):     at org.apache.harmony.xml.ExpatParser.text(ExpatParser.java:166)
06-21 20:22:00.362: WARN/System.err(542):     at org.apache.harmony.xml.ExpatParser.append(Native Method)
06-21 20:22:00.371: WARN/System.err(542):     at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:506)
06-21 20:22:00.371: WARN/System.err(542):     at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:467)
06-21 20:22:00.371: WARN/System.err(542):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:329)
06-21 20:22:00.381: WARN/System.err(542):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:286)
06-21 20:22:00.381: WARN/System.err(542):     at com.pa.passammain.RESTtest.onCreate(RESTtest.java:71)
06-21 20:22:00.391: WARN/System.err(542):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
06-21 20:22:00.391: WARN/System.err(542):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
06-21 20:22:00.401: WARN/System.err(542):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
06-21 20:22:00.401: WARN/System.err(542):     at android.app.ActivityThread.access$2100(ActivityThread.java:116)
06-21 20:22:00.410: WARN/System.err(542):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
06-21 20:22:00.410: WARN/System.err(542):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-21 20:22:00.420: WARN/System.err(542):     at android.os.Looper.loop(Looper.java:123)
06-21 20:22:00.420: WARN/System.err(542):     at android.app.ActivityThread.main(ActivityThread.java:4203)
06-21 20:22:00.420: WARN/System.err(542):     at java.lang.reflect.Method.invokeNative(Native Method)
06-21 20:22:00.430: WARN/System.err(542):     at java.lang.reflect.Method.invoke(Method.java:521)
06-21 20:22:00.430: WARN/System.err(542):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
06-21 20:22:00.442: WARN/System.err(542):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
06-21 20:22:00.442: WARN/System.err(542):     at dalvik.system.NativeStart.main(Native Method)
2
  • What is the exception? Also, you should edit your question to properly format the code so it is readable. You should be able to highlight your code and hit the "code" button. The preview view at the bottom shows you what it looks like. Commented Jun 21, 2010 at 20:08
  • Sorry, it was sectioned out in the preview, i don't know why it didn't work. But edited, fixed, and added logcat response. Commented Jun 21, 2010 at 20:13

1 Answer 1

1

It doesn't look like you allocated an instance of alist, as in

alist = new ArrayList<String>();
Sign up to request clarification or add additional context in comments.

2 Comments

I did at the top of my class. I changed how my error is displayed and now i'm no longer getting an exception, but just a blank screen. Posting new logcat response
So which one is line 45 in characters(). My guess is it's the alist.add(s) and alist is null here.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.