安卓新手学习笔记 ——XML解析与JSON解析

刚开始学习安卓,跟着郭霖大大的《第一行代码》,开始慢慢打开安卓这扇大门。一路看下来,看到不会的就在网上搜资料,或者看官方的reference,基本还是蛮顺利的。不过遇到问题自己想办法解决的确很好,然而总觉得好像缺点什么,所以打算开始记录下自己学习过程中遇到的一些问题,加深一下印象。如果有人和我遇到过同样的问题,看了我的文章,能帮到大家当然更好啦。


常用的解析XML数据的方式有Pull解析和SAX解析,Pull解析主要借助了XmlPullParser对象,而SAX解析则通过继承DefaultHandler类。

首先是Pull解析:

XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser=factory.newPullParser();
xmlPullParser.setInput(new StringReader(xmlData));
得到一个XmlPullParser对象后就可以通过getName()方法得到节点名,再通过循环进行解析。


SAX解析也很简单,通过复写DefaultHandler类中的五个方法来解析:

public void startDocument() throws SAXException {}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException{}
public void characters(char[] ch, int start, int length) throws SAXException{}
public void endElement(String uri, String localName, String qName) throws SAXException{}
public void endDocument() throws SAXException{}
之后通过XMLParserFactory得到XMLReader的实例:
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader xmlReader = factory.newSAXParser().getXMLReader();

再将继承自DefaultHandler类的ContentHandler实例设置到XMLReader中,并通过InputSource类开始执行解析:

xmlReader.setContentHandler(handler);
xmlReader.parse(new InputSource(new StringReader(xmlData)));


至于JSON解析,相比XML解析就简单多了,常用的解析方式也有两种,JSONObject(官方提供可用的),GSON(需要下载jar包)。

首先来看下如何用JSONObject解析吧:

第一步把JSON字符串转换为JSONArray:

 JSONArray jsonArray = new JSONArray(jsonData);

然后通过getJSONObject()方法把JSONArray中的内容循环读取出来就行了:

for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    String id = jsonObject.getString("id");
    String name = jsonObject.getString("name");
    String version = jsonObject.getString("version");
}
这里我的JSON数据中每条数据只有三个属性。


最后是用GSON解析JSON数据,jar包下载下来之后复制到libs下,然后修改下gradle文件同步后就能导入了,使用起来非常简单:

Gson gson=new Gson();
List<App> appList=gson.fromJson(jsonData,new TypeToken<List<App>>(){}.getType());
没错,只要两行代码就行了,声明Gson对象,然后通过fromJson()方法获得一个JSON文件的List<>对象就行了,具体使用可以看 GSON api文档。原理很简单,它可以将一段JSON格式的字符串自动映射成一个对象,所以就不需要你手动编写代码来解析了,不过需要你根据JSON数据定义一个类,和Gson类映射出来的对象对应上。


好了,以上就是XML解析与JSON解析的要点了,想要熟练掌握当然还是要多看api文档、多用才行。接下来再说说我遇到的问题吧。由于我使用的是windows平台,布置Apache服务器比较麻烦,不过最后找到一个比较方便的途径,通过XAMPP,直接安装好就能用了,而且还可以选择部署tomcat、php、MySql。


部署好Apache服务器后还有一个连接的问题,由于我是用真机测试的,所以就不能像模拟器那样用10.0.2.2来连接了,而是要通过局域网的IP地址,然而手头并没有路由器,所以最后想了个办法,通过笔记本开启一个虚拟WiFi,然后手机连接这个WiFi并更改URL为本机的IP地址,这样问题就顺利的解决了!





你可能感兴趣的:(json解析,xml解析,安卓开发)