netboynew 2016-12-31 13:19 采纳率: 40%
浏览 713

android pull 解析XML ,出错求解!

package com.example.administrator.xml;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.widget.Toast;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.button_pullXml).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          ArrayList<Person> list =  pullXml();
            for (int i=0;i<list.size();i++){
                System.out.println(list.get(i));
            }

        }
        private ArrayList<Person>  pullXml() {
            ArrayList<Person> list = new ArrayList<Person>();
            Person person = null;
          //  创建XML解析器
            XmlPullParser pullParser = Xml.newPullParser();
            //创建解析器输入流
            InputStream in = getResources().openRawResource(R.raw.person);
            try {
                pullParser.setInput(in,"UTF-8");
                int eventType = pullParser.getEventType();
                while (eventType != XmlPullParser.END_DOCUMENT){
                    switch (eventType){
                        case XmlPullParser.START_TAG:
                            String tag = pullParser.getName();
                            if("person".equals(tag)){
                                person = new Person();
                                person.setId(Integer.parseInt((pullParser.getAttributeValue(null,"id"))));
                            }else  if("name".equals(tag)){
                                person.setName(pullParser.nextText());
                            }else  if("age".equals(tag)){
                                person.setAge(Integer.parseInt(pullParser.nextText()));
                            }else if("sex".equals(tag)){
                                person.setSex(pullParser.nextText());
                            }else if("tel".equals(tag)){
                                person.setTel(pullParser.nextText());
                            }
                            break;
                        case XmlPullParser.END_TAG:
                            list.add(person);
                            break;
                    }
                    pullParser.next();
                }
            } catch (XmlPullParserException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return list;
        }
    });
}

}

运行后,点击解析BUTTON,卡顿很久提示Xml文件无响应,请教是哪里出错了。

  • 写回答

2条回答 默认 最新

  • sinat_37181010 2016-12-31 13:40
    关注

    你可以关注下 ITIL先锋这个微信公众号 上面每天会更新IT行业最前沿资讯和各种类别的IT资料,感觉工作学习都比较有用

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能