首先创建在Android工程中创建一个Assets文件夹 app/src/main/assets

Android 简易XML解析

在这里添加一个名为 data.xml的文件,然后编辑这个文件,加入如下XML格式内容

<?xml version="1.0" encoding="utf-8"?>
<apps>
    <app>
        <id>1</id>
        <name>Google Maps</name>
        <version>1.0</version>
    </app>
    <app>
        <id>2</id>
        <name>Chrome</name>
        <version>2.1</version>
    </app>
    <app>
        <id>3</id>
        <name>Google play</name>
        <version>2.3</version>
    </app>
</apps>

==============获取XML中内容================

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

        try {
            //获取XML文件的输入流
            InputStream fis = getResources().getAssets().open("data.xml");
            InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
            StringBuffer stringBuffer = new StringBuffer();
            int mark = -1;
            while ((mark = isr.read()) != -1) {
                stringBuffer.append((char) mark);
            }
            String data = stringBuffer.toString();
            //把整个文件内容以String方式传入
            //parseXMLWithPull(data);
            //parseXMLWithSAX(data);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

==============Pull解析方式=================

获取解析工具XmlPullParser:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();

传入XML字符流:
xmlPullParser.setInput(new StringReader(xmlData));

根据节点特征进行处理:
switch ( xmlPullParser.getEventType() )

    private void parseXMLWithPull(String xmlData) {
        try {
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            XmlPullParser xmlPullParser = factory.newPullParser();
            xmlPullParser.setInput(new StringReader(xmlData));
            int eventType = xmlPullParser.getEventType();
            String id = "";
            String name = "";
            String version = "";
            while (eventType != xmlPullParser.END_DOCUMENT) {
                String nodeName = xmlPullParser.getName();
                switch (eventType) {
                    //开始解析某个节点
                    case XmlPullParser.START_TAG: {
                        if ("id".equals(nodeName)) {
                            id = xmlPullParser.nextText();
                        } else if ("name".equals(nodeName)) {
                            name = xmlPullParser.nextText();
                        } else if ("version".equals(nodeName)) {
                            version = xmlPullParser.nextText();
                        }
                    }
                    break;
                    //完成解析某个节点
                    case XmlPullParser.END_TAG: {
                        if ("app".equals(nodeName)) {
                            Log.d("woider", "id is " + id);
                            Log.d("woider", "name is " + name);
                            Log.d("woider", "version is " + version);
                        }
                    }
                    break;
                }
                eventType = xmlPullParser.next();
            }


        } catch (Exception e) {
            e.printStackTrace();
        }
    }
parseXMLWithPull

相关文章:

  • 2022-01-02
  • 2022-12-23
  • 2022-12-23
  • 2021-11-04
  • 2021-04-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-19
  • 2022-02-21
  • 2021-07-05
  • 2022-01-22
  • 2021-11-14
相关资源
相似解决方案