DOM解析XML文件1-ArrayAdapter_simple_list_item_1布局

来源:互联网 发布:淘宝天猫优惠券怎么领 编辑:程序博客网 时间:2024/06/05 10:35

1.新建名为domxmls的Android Application Project
这里写图片描述
2.User.java

package com.example.domain;public class User {    private Integer id;    private String name;    public User() {        super();        // TODO Auto-generated constructor stub    }    public User(Integer id, String name) {        super();        this.id = id;        this.name = name;    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "User [id=" + id + ", name=" + name + "]";    }}

3.users.xml—-保存在assets文件夹中不会被编译

<?xml version="1.0" encoding="UTF-8"?><users>    <user>        <id>1</id>        <name>chj</name>    </user>    <user>        <id>2</id>        <name>bc</name>    </user>    <user>        <id>3</id>        <name>wmm</name>    </user>    <user>        <id>4</id>        <name>yxh</name>    </user>    <user>        <id>5</id>        <name>hl</name>    </user>    <user>        <id>1</id>        <name>chj</name>    </user>    <user>        <id>2</id>        <name>bc</name>    </user>    <user>        <id>3</id>        <name>wmm</name>    </user>    <user>        <id>4</id>        <name>yxh</name>    </user>    <user>        <id>5</id>        <name>hl</name>    </user>    <user>        <id>1</id>        <name>chj</name>    </user>    <user>        <id>2</id>        <name>bc</name>    </user>    <user>        <id>3</id>        <name>wmm</name>    </user>    <user>        <id>4</id>        <name>yxh</name>    </user>    <user>        <id>5</id>        <name>hl</name>    </user></users>

4.MainActivity.java
注意:这里采用的是ListView的simple_list_item_1布局

package com.example.domxml;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListAdapter;import android.widget.ListView;import com.example.domain.User;public class MainActivity extends Activity {    private List<User> users = new ArrayList<User>();    //声明控件对象  视图V    private ListView lv_users;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取控件对象        lv_users=(ListView) findViewById(R.id.lv_users); //视图  jsp html        try {            // dom解析 users.xml asserts目录中            domParser();            //定义要显示的数组 Model            String names[] = new String[users.size()];            for(int i=0;i<users.size();i++){                //用户名存储到names数组中                names[i]=users.get(i).getName();            }            //适配器  控制层 C            ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names);            //设置适配器            lv_users.setAdapter(adapter);        } catch (ParserConfigurationException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (SAXException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    /**     * 解析方法     *      * @throws ParserConfigurationException     * @throws IOException     * @throws SAXException     */    private void domParser() throws ParserConfigurationException, IOException,            SAXException {        // 1.创建DocumentBuilderFactory对象        DocumentBuilderFactory builderFactory = DocumentBuilderFactory                .newInstance();        // 2.通过工厂对象获取DocumentBuilder        DocumentBuilder builder = builderFactory.newDocumentBuilder();        //        // 3 获取要解析的xml文件 对应的输入流        InputStream is = getAssets().open("users.xml");        // 4.利用DocumentBuilder的parse方法获取解析的users.xml的document对象        Document document = builder.parse(is);        // 5.处理解析        // 1.获取文档的跟节点 users        Element root = document.getDocumentElement();        // 2.获取当前根节点下面所有user节点的集合        NodeList nodeList = root.getElementsByTagName("user");        // 遍历孩子节点        for (int i = 0; i < nodeList.getLength(); i++) {            // 获取具体的孩子节点            Node node = nodeList.item(i); // user            // 创建user对象            User user = new User();            // 获取user节点的所有孩子节点 id name            NodeList nlist = node.getChildNodes();            // 遍历孩子节点            for (int index = 0; index < nlist.getLength(); index++) {                // 获取具体的孩子节点                Node n = nlist.item(index);                // 判断该节点的名称是否是id                if (n.getNodeName().equals("id")) {                    // 设置user的id值                    user.setId(Integer.valueOf(n.getTextContent()));                    // 判断该节点的名称是否是name                } else if (n.getNodeName().equals("name")) {                    // 设置name值                    user.setName(n.getTextContent());                }            }            // 添加到集合中            users.add(user);        }    }}

5.在activity_main.xml中添加ListView控件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="${relativePackage}.${activityClass}" >    <ListView        android:id="@+id/lv_users"        android:layout_width="match_parent"        android:layout_height="match_parent" /></RelativeLayout>

这里写图片描述

6.显示效果
这里写图片描述

3 0
原创粉丝点击