Android使用Pull方式解析XML

简单介绍:在Android应用开发中Pull方式解析XML是最被推荐的一种,Android系统内置了Pull解析器用来解析XML文件,它是采用事件驱动来完成XML解析的,只需要处理开始和结束事件,通常使用switch语句根据事件的类型匹配不同的处理方式。最常使用的事件类型: 1. START_DOCUMENT:开始解析(只执行一次) 2. START_TAG:开始元素 3. TEXT:解析文本
摘要由CSDN通过智能技术生成

简单介绍:

在Android应用开发中Pull方式解析XML是最被推荐的一种,Android系统内置了Pull解析器用来解析XML文件,它是采用事件驱动来完成XML解析的,只需要处理开始和结束事件,通常使用switch语句根据事件的类型匹配不同的处理方式。

最常使用的事件类型:
1. START_DOCUMENT:开始解析(只执行一次)
2. START_TAG:开始元素
3. TEXT:解析文本
4. END_TAG:结束元素
5. END_DOCUMENT:结束解析(只执行一次)

最常使用的方法:
1. getEventType():触发并获取第一个事件类型(START_DOCUMENT)
2. getName():获取元素名称
3. nextText():获取当前元素的值
4. next():触发下一个事件
5. getAttributeValue():获取当前元素的属性值(参数为索引,还有一个重载方法,是通过指定命名空间获取的)

用代码实现一下:
在assets目录中创建一个XML文件

<?xml version="1.0" encoding="utf-8"?>
<persons>
    <person>
        <id>1</id>
        <name>zhangsan</name>
        <age>18</age>
    </person>
    <person>
        <id>2</id>
        <name>lisi</name>
        <age>19</age>
    </person>
</persons>
public class MainActivity extends AppCompatActivity {
   

    private static final String TAG = "MainActivityInfo";
    private Button btnPull;

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

        initView();
    }

    /**
     * 初始化UI
     */
    private void initView() {
        btnPull = (Button) findViewById(R.id.btn_pull);

        btnPull.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                InputStream inputStream = getXmlData();
                try {
                    parseXMLWithPull(inputStream);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * 从assets目录中获取xml数据
     *
     * @return xml数据
     */
    public InputStream getXmlData() {
        //获取assets管理者
        AssetManager assetManager = getAssets();
        InputStream inputStream = null;
        try {
            //打开文件获取输入流
            //inputStream输入流不能在此关闭,因为它还要作为其它方法的参数
            inputStream = assetManager.open("persons.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return inputStream;
    }

    /**
     * 使用Pull方式解析xml
     *
     * @param xmlData xml数据
     */
    private void parseXMLWithPull(InputStream xmlData) throws IOException {
        try {
            //创建一个xml解析的工厂
            XmlPullParse
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值