XML的XmlPullParser解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML的XmlPullParser解析相关的知识,希望对你有一定的参考价值。

参考技术A

xml文件的解析有三种方式:

以下使用XmlPullParser来进行解析。

xml可以用在内容判断的时候,比如多种显示
例如a客户需要123
b客户只需要23

xml的读取方式:
1.获取当前的xml
2.对当前的xml以文档的形式进行遍历

想要读取xml需要使用XmlPullParser

这里需要注意的是XmlResourceParser构建的xmlPullParser不再需要额外设置解码类型和xml。
可以直接获取。

存放在res下,存放的目录不同读取的情况也不同。

XmlResourceParser在得到xml内容后不需要再设置解码方式。
XmlResourceParser是继承了XmlPullParser的

一般情况在本地的xml读取会判断一下xml是否存在。

下面以存放在raw目录下,使用XmlPullParserFactory来进行读取的方法

首先是xml

知识点补充:

如果还存在不懂的地方可以联系一下作者,我会帮忙解答!

解析XML

Pull解析

1、获取XmlPullParserFactory实例

  XmlPullParserFactory factory = XmlPullParserFactory.newInstanc();

2、借助XmlPullparserFactory实例获取XmlPullParser对象

  XmlPullParser xmlPullParser = factory.newPullParser();

3、调用setInput()解析数据

  xmlPullParserl.setInput(new StringReader(xmlData));

4、调用getEvent()得到当前解析事件

  int eventType = xmlPullParser.getEventType();

5、利用while循环解析

  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("MainActivity","id is"+id);

        Log.d("MainActivity","name is"+name);

        Log.d("MainActivity","version is"+version);

      }

      break;

    default:

      break;

  }

  eventType = xmlPullParser.next();

 }

......

 

SAX解析

1、创建一个类继承自DefaultHandler,并重写5个方法(startDocument()、startElement()、characters()、endElement()、endDocument())

2、创建SAXParserFactory实例

  SAXParserFactory factory = SAXParserFactory.newInstance();

3、通过factory创建XMLReader对象

  XMLReader xmlReader = factory.newSAXParser().getXMLReader();

4、创建ContentHandler对象

  ContentHandler handler = new ContentHandler();

5、将ContentHandler的实例设置到XMLReader中

  xmlReader.setContentHandler(handler);

6、开始解析

  xmlParser.parse(new InputSource(new StringReader(xmlData)));

          

  

以上是关于XML的XmlPullParser解析的主要内容,如果未能解决你的问题,请参考以下文章

xmlPullParser的使用

XmlPullParser:如何找出 START_TAG 是啥?

如何使用xmlpullparser解析android中的汉字

Android:DOM vs SAX vs XMLPullParser 解析?

XmlPullParser - 意外令牌(android)

xml文件解析和序列化