首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

pull解析xml数据有关问题

2012-02-28 
pull解析xml数据问题Java codewhile (type ! XmlPullParser.END_DOCUMENT) {switch (type) {case XmlPull

pull解析xml数据问题

Java code
while (type != XmlPullParser.END_DOCUMENT) {            switch (type) {            case XmlPullParser.START_DOCUMENT:                break;            case XmlPullParser.START_TAG:                if (XmlConstants.RESULT.equals(parser.getName())) {                    if ("0".equals(parser.getAttributeValue(null,                            XmlConstants.STATUS))) {                        return list;                    }                }                if (FriendList.MEMBER.equals(parser.getName())) {                    FriendInfo friend = new FriendInfo();                    friend.setUserid(parser.nextText());//下面出现问题,parser.getAttributeValu抛出异常Indexoutofbound异常,  说不是开始tag                    friend.setName(parser.getAttributeValue(null,                            FriendList.NAME));                    friend.setRelation(parser.getAttributeValue(null,                            FriendList.RELATION));                    friend.setTelno(parser.getAttributeValue(null,                            FriendList.TELNO));                    friend.setBirthday(parser.getAttributeValue(null,                            FriendList.BIRTHDAY));                    list.add(friend);                }                break;            case XmlPullParser.END_TAG:                break;            }            type = parser.next();        }        is.close();        return list;


[解决办法]
发一段我写的SAX解析吧
public class NewsHandler extends DefaultHandler{
private boolean in_item=false;
private List<News> li;
private News news;
private String title="";

private StringBuffer buf=new StringBuffer();

public List<News> getParsedData()
{
return li;
}
public String getRssTitle()
{
return title;
}
public void startDocument() throws SAXException
{
li= new ArrayList<News> ();
}
public void endDocument() throws SAXException
{

}
public void startElement(String namespaceURI,String localName,String qName,Attributes atts) throws SAXException
{//遇到开始标签时,判断是否在每个Item项中
if(localName.equals("item"))
{
this.in_item=true;
news=new News();
}

}
public void endElement(String namespaceURI,String localName,String qName) throws SAXException
{//遇到返回标签时将变量存放在相应的变量中
if(localName.equals("item"))
{
this.in_item=false;
li.add(news);
}
else if(localName.equals("title"))
{
if(this.in_item)
{
news.setTitle(buf.toString().trim());
}
}
else if(localName.equals("link"))
{
if(this.in_item)
{
news.setLink(buf.toString().trim());
}
}
else if(localName.equals("description"))
{
if(in_item)
{
news.setDesc(buf.toString().trim());
}
}
else if(localName.equals("pubDate"))
{
if(in_item)
{
news.setDate(buf.toString().trim());
}
}
buf.setLength(0);
}
public void characters(char ch[],int start,int length)
{
if(this.in_item)
{
buf.append(ch,start,length);
}

}
}

[解决办法]
xml文件 根式是什么样的?
都一起发出来 就知道了 pull和 sax都一样 自己 仔细店检查 越界 无非就是 你当前的数据 不是 你要抓去的 自己 加个 判断的标志就是了
[解决办法]
如果数据格式正确,应该不会发生这种事情,请LZ检查一下数据源是否正确。
------解决方案--------------------


while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if ("Application".equals(parser.getName())) {
app = new App();
app.setUuid(parser.getAttributeValue(0));
break;
}
if ("AppUuid".equals(parser.getName())) {
String uuid = parser.nextText();
app.setUuid(uuid);
}
if ("AppType".equals(parser.getName())) {
String appType = parser.nextText();
app.setType(Integer.parseInt(appType));
}
if ("AppName".equals(parser.getName())) {
String appName = Base64.decodeString(parser.nextText());
app.setAppName(appName);
apps.add(app);
app = null;
}

break;
case XmlPullParser.END_TAG:
break;
}
eventType = parser.next(); // 进入下一个元素并触发事件.
}
return apps;

热点排行