带有java.lang.IllegalArgumentException的Android XmlPullParser

带有java.lang.IllegalArgumentException的Android XmlPullParser,java,android,eclipse,exception,android-emulator,Java,Android,Eclipse,Exception,Android Emulator,我是Android开发新手。现在我通过观看视频教程学习使用XmlPullParser读取XML文件。然而,在完成我的代码后,我遇到了这个异常问题,我非常确定我使用的代码与视频中的代码相同。有人能帮我指出问题出在哪里吗 我的主要活动代码: public class MainActivity extends Activity { List<City> cityList; @Override protected void onCreate(Bundle save

我是Android开发新手。现在我通过观看视频教程学习使用XmlPullParser读取XML文件。然而,在完成我的代码后,我遇到了这个异常问题,我非常确定我使用的代码与视频中的代码相同。有人能帮我指出问题出在哪里吗

我的主要活动代码:

public class MainActivity extends Activity {

    List<City> cityList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void click(View v) {

        InputStream is = getClassLoader().getResourceAsStream("weather.xml");

        XmlPullParser xp = Xml.newPullParser();

        try {
            xp.setInput(is, "utf-8");

            int type = xp.getEventType();
            City city = null;

            while (type != XmlPullParser.END_DOCUMENT) {

                switch (type) {
                case XmlPullParser.START_TAG:

                    if ("weather".equals(xp.getName())) {
                        cityList = new ArrayList<City>();
                    }
                    else if ("city".equals(xp.getName())) {

                        city = new City();
                    }
                    else if ("name".equals(xp.getName())) {

                        String name = xp.nextText();
                        city.setName(name);
                    }
                    else if ("temp".equals(xp.getName())) {
                        String temp = xp.nextText();
                        city.setTemp(temp);
                    }
                    else if ("pm".equals(xp.getName())) {
                        String pm = xp.nextText();
                        city.setPm(pm);
                    }                   
                    break;

                case XmlPullParser.END_TAG:
                    if ("city".equals(xp.getName())) {

                        cityList.add(city);
                    }
                    break;
                }               

                type = xp.next();
            }

            for (City c : cityList) {
                System.out.println("haha");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       
    }
}
公共类MainActivity扩展活动{
列出城市名单;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
公共作废点击(视图五){
InputStream=getClassLoader().getResourceAsStream(“weather.xml”);
XmlPullParser xp=Xml.newPullParser();
试一试{
xp.setInput(即“utf-8”);
int type=xp.getEventType();
城市=空;
while(type!=XmlPullParser.END_文档){
开关(类型){
case XmlPullParser.START_标记:
if(“weather.equals(xp.getName())){
cityList=newarraylist();
}
如果(“city.equals(xp.getName())),则为else{
城市=新城();
}
else如果(“name”.equals(xp.getName())){
字符串名称=xp.nextText();
城市名称(名称);
}
else如果(“temp.equals(xp.getName())){
字符串temp=xp.nextText();
城市。塞滕普(临时);
}
else如果(“pm”.equals(xp.getName())){
字符串pm=xp.nextText();
城市。setPm(下午);
}                   
打破
case XmlPullParser.END_标记:
如果(“city.equals(xp.getName())){
城市列表。添加(城市);
}
打破
}               
type=xp.next();
}
适用于(城市c:城市列表){
System.out.println(“哈哈”);
}
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}       
}
}
Logcat错误显示:

09-06 19:23:07.411:W/System.err(1066):java.lang.IllegalArgumentException 09-06 19:23:07.411:W/System.err(1066):位于org.kxml2.io.KXmlParser.setInput(KXmlParser.java:1615) 09-06 19:23:07.420:W/System.err(1066):位于com.example.pullparser.MainActivity.click(MainActivity.java:33) 09-06 19:23:07.420:W/System.err(1066):位于java.lang.reflect.Method.invokenactive(本机方法) 09-06 19:23:07.431:W/System.err(1066):位于java.lang.reflect.Method.invoke(Method.java:511) 09-06 19:23:07.431:W/System.err(1066):在android.view.view$1.onClick(view.java:3039) 09-06 19:23:07.440:W/System.err(1066):在android.view.view.performClick(view.java:3511)上 09-06 19:23:07.450:W/System.err(1066):在android.view.view$PerformClick.run(view.java:14105) 09-06 19:23:07.450:W/System.err(1066):位于android.os.Handler.handleCallback(Handler.java:605) 09-06 19:23:07.450:W/System.err(1066):位于android.os.Handler.dispatchMessage(Handler.java:92) 09-06 19:23:07.460:W/System.err(1066):在android.os.Looper.loop(Looper.java:137)上 09-06 19:23:07.470:W/System.err(1066):位于android.app.ActivityThread.main(ActivityThread.java:4424) 09-06 19:23:07.470:W/System.err(1066):位于java.lang.reflect.Method.invokenactive(本机方法) 09-06 19:23:07.470:W/System.err(1066):位于java.lang.reflect.Method.invoke(Method.java:511) 09-06 19:23:07.480:W/System.err(1066):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-06 19:23:07.480:W/System.err(1066):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-06 19:23:07.490:W/System.err(1066):在dalvik.System.NativeStart.main(本机方法) 09-06 19:24:07.570:D/dalvikvm(191):GC_并发释放385K,9%释放6973K/7623K,暂停6ms+7ms :E/():设备已断开连接


谢谢你的帮助

哪一行是第33行?xp.setInput(是“utf-8”)@伊米比斯