美文网首页
解析xml格式文件

解析xml格式文件

作者: 墨染草 | 来源:发表于2018-09-28 15:59 被阅读15次

package example.com.networktest.utility;

import android.util.Log;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import java.io.StringReader;

import javax.xml.parsers.SAXParserFactory;

import example.com.networktest.ContentHandler;

public class ParseXML {

private static final String TAG = "我是ParseXML";

    /**
     * Pull方式解析xml文件
     * @param xmlData 待解析的xml数据
     */
    public static void parseXMLWithPull(String xmlData) {
        try {
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            XmlPullParser xmlPullParser = factory.newPullParser();
            xmlPullParser.setInput(new StringReader(xmlData));
          // 还有xmlPullParser.setInput(InputStream,encoding)方法

            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)) {
                            //nextText()方法用于获取当前节点的内容
                            id = xmlPullParser.nextText();
                        } else if ("name".equals(nodeName)) {
                            name = xmlPullParser.nextText();
                        } else if ("version".equals(nodeName)) {
                            version = xmlPullParser.nextText();
                        }
                        break;
                    }
                    //当完成解析"app"节点时,打印出app的节点信息
                    case XmlPullParser.END_TAG: {
                        if ("app".equals(nodeName)) {
                            Log.d(TAG, "id is " + id);
                            Log.d(TAG, "name is " + name);
                            Log.d(TAG, "version is " + version);
                        }
                        break;
                    }
                    default:
                        break;
                }
                eventType = xmlPullParser.next();
            }
        } catch (Exception e) {
            Log.d("出现异常", e.toString());
        }
    }
   /**
     * SAX方式解析xml文件
     * @param xmlData 带解析的xml数据
     */
    public static void parseXMLWithSAX(String xmlData) {
        try {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            XMLReader xmlReader = factory.newSAXParser().getXMLReader();

            //将contentHandler的实例设置到xmlReader中
            xmlReader.setContentHandler(new ContentHandler());
            //开始解析xml文件
            xmlReader.parse(new InputSource(new StringReader(xmlData)));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

相关文章

  • 解析xml格式文件

    package example.com.networktest.utility; import android.u...

  • MacOS开发笔记22-应用下载更新

    思路:1.版本更新配置文件(plist,xml,或者txt能解析的格式文件),再制作一个dmg文件,放置在服务器上...

  • iOS解析XML

    2.0 XML解析 2.1 XML简单介绍 (1) XML:可扩展标记语言 (2) XML解析 2.2 XML解析...

  • iOS开发-XML解析

    一、 XML解析 1.1 XML简单介绍 (1) XML:可扩展标记语言 (2) XML解析 1.2 XML解析 ...

  • 3-XML解析

    3.0 XML解析 3.1 XML简单介绍 (1) XML:可扩展标记语言 (2) XML解析 3.2 XML解析...

  • XML、JSON解析

    XML解析 XML_GData解析 JSON解析

  • 05、网络解析

    解析:从事先规定好的格式中提取数据iOS开发常见的解析:XML解析,JSON解析 XML解析 XMl事例: XML...

  • Senior进阶 网络之数据解析之XML解析和JSON解析的用法

    Senior进阶 网络之数据解析之XML解析和JSON解析的用法 XML解析之SAX解析 XML解析之DOM解析 ...

  • XML

    NSXMLParser解析XML GDataXML解析XML

  • XML*

    目录 XML简介 XML基本语法 XML解析 * DOM解析   * DOM解析原理及工具   * DOM4J解析...

网友评论

      本文标题:解析xml格式文件

      本文链接:https://www.haomeiwen.com/subject/cmspoftx.html