xmldom解析

public class MainActivity extends Activity {

    List<Person>  pers=new ArrayList<Person>();
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //dom:支持所有语言的解析方式
    public void getxmlData(View v){
      /**
       *   1. 获得xml文档:
       *   2. 得到文档下的根元素;
       *   3. 获得根元素下所有子元素;    
       */
        try {
            //1 获得 构造document对象的工厂
            DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
            DocumentBuilder builder=factory.newDocumentBuilder();
            Document doc=builder.parse(getAssets().open("data.xml"));
            //获得根元素  <persons>
            Element element = doc.getDocumentElement();
            //获得 <persons> 下直接子节点
            NodeList childNodes = element.getChildNodes();
            int length = childNodes.getLength();
            Toast.makeText(this, "元素个数:"+length, 0).show();
            //childNodes 底层是集合
            
            for(int i=0;i<childNodes.getLength();i++){
                Node item = childNodes.item(i);
                //判断item是不是  元素 <person>
                if(item.getNodeType()==Node.ELEMENT_NODE){
                    Person p=new Person();  //创建java没有属性值的对象
                    //<person id=1 />
                    Element e=(Element) item;  //把父类
                    String id = e.getAttribute("id");
                    p.setId(Integer.parseInt(id.trim()));   //把读取的id的值去掉空格转为int类型
                    Log.d("TAG", "id:+++++++"+id);
                    //获取<person>下的 子干
                    
                    NodeList nameages = e.getChildNodes();  //e=<person>--getChildNodes-->  <name>  <age>  ....
                    //如果<person>下没有空白   --->for循环2次 分别   <name><age>
                    for(int j=0;j<nameages.getLength();j++){
                        Node node = nameages.item(j);    //<name>   <age>   ....
                        if(node.getNodeType()==Node.ELEMENT_NODE){  //过滤空白后---->第一次进入if <name>
                            Element childe= (Element) node;//node---><name>
                            Node child = childe.getFirstChild()  ;//取name 下的值  <name>李四</name>
                            String value = child.getNodeValue().trim();
                            if(node.getNodeName().equals("name")){
                                p.setName(value);
                            }else if(node.getNodeName().equals("age")){
                                p.setAge(Integer.parseInt(value));
                            }
                        }
                    }
                    pers.add(p);
                    
                }
                
                
            }
            
            Log.d("TAG", "length:+++++++"+pers);
            
            
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
        
    }
    

}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

public class Person {
    private int id;
    private String name;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Person(int id, String name, int age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public Person() {
        super();
    }
    @Override
    public String toString() {
        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
    
    
    
    

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值