android编程之XML文件解析方法详解(附源码下载)

2019-12-10 19:53:56王冬梅
  • //解析器注册事件  xmlReader.setContentHandler(helperHandler); 
  • //读取文件流  InputStream stream=getResources().openRawResource(R.raw.channels); 
  • InputSource is=new InputSource(stream);  //解析文件 
  • xmlReader.parse(is);  return helperHandler.getList(); 
  • 从第二部分代码,可以看出使用SAX解析XML的步骤:

    1、实例化一个工厂SAXParserFactory

    2、实例化SAXPraser对象,创建XMLReader 解析器

    3、实例化handler,处理器

    4、解析器注册一个事件

    4、读取文件流

    5、解析文件

    二、使用pull方式解析

    基础知识:

    在android系统中,很多资源文件中,很多都是xml格式,在android系统中解析这些xml的方式,是使用pul解析器进行解析的,它和sax解析一样(个人感觉要比sax简单点),也是采用事件驱动进行解析的,当pull解析器,开始解析之后,我们可以调用它的next()方法,来获取下一个解析事件(就是开始文档,结束文档,开始标签,结束标签),当处于某个元素时可以调用XmlPullParser的getAttributte()方法来获取属性的值,也可调用它的nextText()获取本节点的值。

    其实以上描述,就是对整个解析步骤的一个描述,看看代码吧

     

     
    1. private List<Map<String, String>> getData() {  List<Map<String, String>> list = new ArrayList<Map<String, String>>(); 
    2. XmlResourceParser xrp = getResources().getXml(R.xml.channels);  try { 
    3. // 直到文档的结尾处  while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) { 
    4. // 如果遇到了开始标签  if (xrp.getEventType() == XmlResourceParser.START_TAG) {