java通过XmlPullParser类解析xml

本文介绍了一种使用XmlPullParser解析XML文件的具体方法,通过实例演示了如何读取和处理XML数据,包括初始化解析器、读取标签内容及构建数据集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml文件

<?xml version="1.0" encoding="UTF-8"?>    
<beauties>    
    <daxiongmei>    
        <name>杨幂</name>    
        <age>28</age>    
    </daxiongmei>    
    <daxiongmei>    
        <name>范冰冰</name>    
        <age>23</age>    
    </daxiongmei>    
    
</beauties> 


解析的类代码如下(XmlPullParser ):

<code class="language-java">    // 获取xml文件  
    InputStream is = this.getAssets().open("beauties.xml");  
    // 新建一个XmlPullParser对象,并设置编码  
    XmlPullParserFactory parserfactory = XmlPullParserFactory.newInstance();
    //define xmlparse XmlPullParser
    XmlPullParser xpp = parserfactory.newPullParser();

    xpp.setInput(is,"UTF-8");  
    int eventType = xpp.getEventType();// 获取事件类型  
  
    // 判断事件是否到最后  
    while(eventType!=XmlPullParser.END_DOCUMENT)  
    {  
        switch (eventType) {  
        // 判断当前事件是否为文档开始事件  
        case XmlPullParser.START_DOCUMENT:  
            mList = new ArrayList<Beauty>(); // 初始化Beauty集合  
            break;  
        // 判断当前事件是否为标签元素开始事件  
        case XmlPullParser.START_TAG:  
            if (xpp.getName().equals("daxiongmei")) { // 判断开始标签元素是否是daxiongmei  
                beauty = new Beauty();//声明一个实体类,包含相应的get和set方法。  
            } else if (xpp.getName().equals("name")) {  
                eventType = xpp.next();// 让解析器指向name属性的值  
                // 得到name标签的属性值,并设置beauty的name  
                beauty.setName(xpp.getText());  
            } else if (xpp.getName().equals("age")) { // 判断开始标签元素是否是beauty  
                eventType = xpp.next();// 让解析器指向age属性的值  
                // 得到age标签的属性值,并设置beauty的age  
                beauty.setAge(xpp.getText());  
            }  
            break;  
        // 判断当前事件是否为标签元素结束事件  
        case XmlPullParser.END_TAG:  
            if (xpp.getName().equals("daxiongmei")) { // 判断结束标签元素是否是book  
                mList.add(beauty); // 将book添加到books集合  
                beauty = null;  
            }  
            break;  
        }  
        // 进入下一个元素并触发相应事件  
        eventType = xpp.next();  
  
    }  
</code>  


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值