2 qizhewoniuxuanwu qizhewoniuxuanwu 于 2014.06.19 10:09 提问

在做项目实训,遇到Xml解析的问题

运行时出现这样的问题setInput() must be called first. (position:START_DOCUMENT null@1:1)

<?xml version="1.0" encoding="UTF-8"?>
-<Response>-<Error><ErrorCode>0</ErrorCode></Error>-<Data>-<UserBean><Id>269</Id><Gender>1</Gender><Department>1</Department><Email>1234567@163.com</Email><Age>11</Age></UserBean></Data></Response>

我的代码是:

public class XmlRegist extends XmlGridParser {

 boolean isLoginfo = false;
 boolean isName = false;
 boolean isGender = false;
 boolean isDepart = false;
 boolean isPass = false;
 boolean isEmail = false;
 boolean isAge = false;
public XmlRegist(InputStream is, XmlPullParser parser) throws ParseException {
    super(is, parser);
}

protected void handleExtraElementInEntry(EntryP entry)
        throws XmlPullParserException, IOException, ParseException {
    XmlPullParser parser = getParser();
    if (!(entry instanceof EntryLogin)) {
        throw new IllegalArgumentException("Expected EntryRegist!");
    }
    EntryRegist regist = (EntryRegist) entry;
    int type = parser.getEventType();
    try
    {


        while (type != XmlPullParser.END_DOCUMENT)
        {
            String name = parser.getName();
           switch( type)
           {
           case XmlPullParser.START_DOCUMENT:
               break;


           case XmlPullParser.START_TAG:
           {if(name.equals("Data"))
           {
            if (type == XmlPullParser.START_TAG
                    && name.equals(regist.USERBEAN)) {

            if (type == XmlPullParser.START_TAG && name.equals(regist.LOFINFO))
            {
                isLoginfo = true;
            } else if (type == XmlPullParser.END_TAG&& name.equals(regist.LOFINFO)) {
                isLoginfo = false;
            }
            else if(type==XmlPullParser.START_TAG&&name.equals(regist.NAME))
            {
                isName=true;
            }else if(type==XmlPullParser.END_TAG&&name.equals(regist.NAME))
            {
                isName=false;
            }
            else if(type==XmlPullParser.START_TAG&&name.equals(regist.GENDER))
            {
                isGender=true;
            }else if(type==XmlPullParser.END_TAG&&name.equals(regist.GENDER))
            {
                isGender=false;
            }
            else if(type==XmlPullParser.START_TAG&&name.equals(regist.DEPART))
            {
                isDepart=true;
            }else if(type==XmlPullParser.END_TAG&&name.equals(regist.DEPART))
            {
                isDepart=false;
            }
            else if(type==XmlPullParser.START_TAG&&name.equals(regist.PASS))
            {
                isPass=true;
            }else if(type==XmlPullParser.END_TAG&&name.equals(regist.PASS))
            {
                isPass=false;
            }
            else if(type==XmlPullParser.START_TAG&&name.equals(regist.AGE))
            {
                isAge=true;
            }else if(type==XmlPullParser.END_TAG&&name.equals(regist.AGE))
            {
                isAge=false;
            }


            else if (type == XmlPullParser.TEXT)
            {
                if (isLoginfo)
                {
                    if (Util.isNull(parser.getText())) {
                        regist.setUserId(parser.getText());
                    } 
                }
                if (isName)
                {
                    if (Util.isNull(parser.getText())) {
                        regist.setUsername(parser.getText());
                    } 
                }
                if (isGender)
                {
                    if (Util.isNull(parser.getText())) {
                        regist.setGender(parser.getText());
                    }
                }
                if (isDepart)
                {
                    if (Util.isNull(parser.getText())) {
                        regist.setDepart(parser.getText());
                    }
                }
                if (isPass)
                {
                    if (Util.isNull(parser.getText())) {
                        regist.setPass(parser.getText());
                    }
                }

                if (isEmail)
                {
                    if (Util.isNull(parser.getText())) {
                        regist.setEmail(parser.getText());
                    }
                }
                if (isAge)
                {
                    if (Util.isNull(parser.getText())) {
                        regist.setAge(parser.getText());
                    }
                }


            }

            else if (type == XmlPullParser.END_TAG
                    && name.endsWith(regist.USERBEAN))
            {
                break;
            }
            type = parser.next();
           }

           }
           }
        }
        }
    } catch (XmlPullParserException e) {
        UtilLog.e("Xml XmlLogin-handleExtraElementInEntry(): ",
                e.getMessage());
    }
}

}

应该是解析时出错了,可是都两天了,实在是找不到原因,只能求助于各位大神啦。
在线坐等

2个回答

xiastars
xiastars   2014.09.23 21:32

我也遇到了这样的问题,但是是这样的,同事在SVN中修改了ServerHost,我这边没有更新完全报了这一个错误,修改后解决了

qq_28295425
qq_28295425   2017.05.28 17:39

没有写 xmlPullParser.setInput(new StringReader(xmlData));

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java实习生在项目中遇到的问题
配置项目时出现的问题: 1.输入用户名和密码登录不上 解决方法:并不是数据库的问题,进入前台代码目录页面,App/config 目录下点开config.js,更改 为"api_url": "http://127.0.0.1:8080/leasecore/api/", 2.或者直接改confg目录下,其URL为"api_url": "http://127.0.0.1:8080/leaseco
用java解析xml时遇到的问题
出现的问题是:编译通过,运行出错,报出的错误是: Exception in thread "main" java.lang.NullPointerException 以下是java代码,import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilderFactory;
C#编程实践中问题与解决方案总结
文章内容包括: windows form (窗体) 之间传值小结 ; WCF传输大数据的三种解决方案:WCF传输大数据量DataSet ,在WCF中分页传输数据(Duplex方式),序列化传输; WCF消息回调与心跳包的解决方案
学生信息管理系统中遇到的一些问题
学生信息管理系统虽然已经让师傅
实验遇到的问题及解决
1.linux cache清除: echo 1 | sudo tee /proc/sys/vm/drop_caches echo 2 | sudo tee /proc/sys/vm/drop_caches echo 3 | sudo tee /proc/sys/vm/drop_caches
做项目过程中遇到的问题
正在进行着的一个项目,行至一半,停下记录下一些需要注意的地方。 1.梳理清即将要写的功能的逻辑,用到的技术点,用什么方式实现功能,然后再去寻找技术点的使用。 2.判空操作:controller接收前台传入的参数时、查询方法查出的对象信息等都为了避免出现java.lang.NullPointException错误,都需要在这是判断是否为空null, 对象类型判断: User user;
最近做网页前端项目时遇到的一些问题以及解决方案
这几天和同学一起接了老师布置的两个网页项目,虽然只做前端静态页面,但是真正实践的时候我发现有些东西还是要用一用,出点错才能记得解决方案。第一个:设置宽屏效果 当我们需要顶部的banner横向充满整个屏幕以显示宽屏效果时 我们会把这个banner的width设置为100%, 于是问题出现了,我们发现边上会有一些边距,想这样 出现这种问题我们需要在CSS的body中设置两个属性: m
java 实习遇到的问题和一些小经验(第一个月)
都是随手记录的可能比较乱;但记录我的成长 2.Toggle();如果被选元素可见,则隐藏这些元素,如果被选元素隐藏,则显示这些元素。(jquery) 3.Strut请求的跳转; 4.前台和后台 5.Window.open(“url”,”_blank”);其中_blank属性表示打开一个空白页面 6.动态生成行号:        ${index.index+1} //注意:行
ASP.NET-实训内容
一、认识MVC模式 注意:*MVC是针对视图层来说的,意思这个MVC框架只是视图层的。(这里的MVC和java的MVC有区别) 控制器Controller:处理用户交互,与模型协作,并选择一个视图作为用户界面来显示。 视图View:显示结果的用户界面。 模型Model:用于封装与应用业务逻辑相关的数据以及用于控制访问和修改这些数据的业务规则。二、安
软件综合实习遇到的问题
每重装一次android studio时,SHA1的 值都会改变,这是定位就会失效,因此要去高德开发者应用程序设置中改一下SHA1的值,然后提交,但生成的key不会变。 Dos界面的内容可以右键选择标记,然后进行复制Ctrl+c进行复制。