读书笔记2,xml和json数据格式的解析

来源:互联网 发布:阿里巴巴排名优化工具 编辑:程序博客网 时间:2024/06/07 04:53

解析XML数据格式

1.Pull解析方式

.获取XmlPullParserFactory的实例

.借助以上实例获得XmlPullparser的对象

.调用XmlPullParser对象的setInput()方法设置好解析的内容

.通过XmlPullParser对象的getEventType()方法获取当前解析事件

.开始解析,

调用XmlPullParser对象的next()方法获取下一个解析事件

事件的常用常量有:XmlPullParser.START_TAG//开始解析某个节点,XmlPullParser.END_TAG//完成解析某个节点

调用XmlPullParser对象的getName()方法获取当前节点的名字

解析完成,getEventType()返回XmlPullParser.END_DOCUMENT常量

 private void parseXML(String xml_str){        try {            //获取XmlPullparserFactory对象            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();            //获得XmlPullParser对象            XmlPullParser parser = factory.newPullParser();            //设置解析内容            parser.setInput(new StringReader(xml_str));            //获取当前的事件            int eventType = parser.getEventType();            //开始解析            while(eventType != XmlPullParser.END_DOCUMENT){                String name = parser.getName();                switch (eventType) {                    case XmlPullParser.START_TAG:                        //根据节点的名称进行操作                        break;                    case XmlPullParser.END_TAG:                        //完成解析某个节点后的操作                        break;                    default:                        break;                }                eventType = parser.next();            }        } catch (Exception e) {            e.printStackTrace();        }    }
2.SAX解析方式

.新建一个类继承自DefaultHandler并重写父类的五个方法,基本原理与Pull解析相同

public class MyHandler extends DefaultHandler {    //开始解析Xml时调用    @Override    public void startDocument() throws SAXException {        super.startDocument();    }    //完成解析时调用    @Override    public void endDocument() throws SAXException {        super.endDocument();    }    //解析某个节点时调用    @Override    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {        super.startElement(uri, localName, qName, attributes);    }    //完成解析某个节点时调用    @Override    public void endElement(String uri, String localName, String qName) throws SAXException {        super.endElement(uri, localName, qName);    }    //获取节点内容时调用    @Override    public void characters(char[] ch, int start, int length) throws SAXException {        super.characters(ch, start, length);    }}

private void parseXMLWithSAX(String xml_str){        SAXParserFactory factory = SAXParserFactory.newInstance();        try {            XMLReader reader = factory.newSAXParser().getXMLReader();            MyHandler handler = new MyHandler();            reader.setContentHandler(handler);            //开始解析            reader.parse(new InputSource(new StringReader(xml_str)));        } catch (Exception e) {            e.printStackTrace();        }    }
解析JSON数据格式

1.JSONObject解析

.通过返回的字符串数据构造一个JSONObject对象

.通过JSONObject对象的一系列get方法获取指定名称的数据

json_ob.getJSONObject(String name);json_ob.getString(String name);json_ob.getInt(String name);json_ob.getDouble(String name);json_ob.getBoolean(String name);json_ob.getJSONArray(String name);
.通过JSONArray对象的getJSONObject(int index)方法获取指定索引的JSON对象
2.GSON解析

根据JSON数据里的具体内容定义一个类,通过GSON的fromJson(String data,Class<?>)方法可以将这段数据解析为这个类的对象

根据JSON数据里的具体内容定义一个类,通过GSON的fromJson(String data,new TypeToken<List<Class<>?>>(){}.getType())方法可以将这段数据解析为这个类的集合

使用GSON需要添加依赖库

compile 'com.google.code.gson:gson:2.7'




原创粉丝点击