扣丁学堂——XML解析

一丶代码见本文

二丶课程讲解


扣丁学堂——XML解析_第1张图片


public class XMLparse extends AppCompatActivity {

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


    /***
     * 使用 pull 解析 xml文件
     *
     * @param view
     */
    public void xmlPullClic(View view) {

        ArrayList<Person> plist = parse();//解析xml
        for (int i = 0; i < plist.size(); i++) {
            System.out.print(plist.get(i));
        }
    }

    private ArrayList<Person> parse() {

        //封装xmL节点信息
        ArrayList<Person> list = new ArrayList<Person>();

        //封装对象
        Person p = null;

        //创建xml 解析器
        XmlPullParser pull = Xml.newPullParser();

        // StringReader st = new StringReader(xml);

        InputStream in = getResources().openRawResource(R.raw.info);

        try {
            pull.setInput(in, "utf-8");//xml文件流

            int eventType = pull.getEventType();//获取当前的事件类型
            while (eventType != XmlPullParser.END_DOCUMENT) {
                switch (eventType) {
                    case XmlPullParser.START_TAG:
                        //开时位置时 :读取内容
                        String tag = pull.getName();//标记名称

                        if ("person".equals(tag)) {
                            p = new Person();
                            p.setId(Integer.parseInt(pull.getAttributeValue(null, "id"))); //获取标记属性 id
                        } else if ("name".equals(tag)) {
                            p.setName(pull.nextText());//因为文本在标记里面,所以要用 nextText()
                        } else if ("age".equals(tag)) {
                            p.setAge(Integer.parseInt(pull.nextText()));
                        } else if ("sex".equals(tag)) {
                            p.setSex(pull.nextText());
                        } else if ("tel".equals(tag)) {
                            p.setTel(pull.nextText());
                        } else if ("address".equals(tag)) {
                            p.setAddress(pull.nextText());
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        if ("person".equals(pull.getName())) {
                            list.add(p);
                        }
                        break;
                }

                eventType = pull.next();//下一个事件类型
            }

        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list; //xml解析后返回的结果
    }
}

这里只是一个理解,做了解,后期加强

你可能感兴趣的:(android,xml解析)