android基础篇------------java基础(11)(文件解析xml and Json )

来源:互联网 发布:java 集合迭代器 编辑:程序博客网 时间:2024/06/04 08:49

一:xml文件解析

首先看一下:我们要解析的内容:

 <?xml version="1.0" encoding="gbk" ?> - <bookstore>- <book id="1">  <title tid="1">Harry Potter</title>   <author>J K Rowling</author>   <year>2005</year>   <price>29.99</price>   </book>- <book id="2">  <title tid="2">Harry Potter</title>   <author>J K Rowling</author>   <year>2006</year>   <price>39.99</price>   </book>- <book id="3">  <title tid="1">明朝那些事儿</title>   <author>当年明月</author>   <year>2009</year>   <price>19.99</price>   </book>  </bookstore>

我们看一下:我们的DOM结构图:


通过上面的图:我们首先了解了一个book.xml中各个结点都叫什么,但是,值得注意的是:

<book id="1">


中的id是:属性结点。

那么解析的过程是这样的。

public class TestDOMBook {public static void main(String[] args) {         // 1、得到DOM解析器的工厂实例DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();try {// 2、从DOM工厂获得DOM解析器DocumentBuilder db = dbf.newDocumentBuilder();// 3、解析XML文档,得到一个Document,即DOM树Document doc = db.parse("e:/book.xml");// 4、得到所有book节点列表信息NodeList petList = doc.getElementsByTagName("book");// 5、轮循书本信息System.out.println("XML文件中book的初始化信息:");for (int i = 0; i < petList.getLength(); i++) {// 得到book元素Element book = (Element) petList.item(i);// 得到book元素下的id属性的值String strId = book.getAttributeNode("id").getNodeValue();System.out.println("ID:" + strId);// 得到book下的title子元素节点下的子文本节点的值String strTitle = book.getElementsByTagName("title").item(0).getFirstChild().getNodeValue();// 得到book下的title子元素节点Element title = (Element) book.getElementsByTagName("title").item(0);// 得到title元素节点的tid属性节点的值String strTid = title.getAttributeNode("tid").getNodeValue();String strAuthor = book.getElementsByTagName("author").item(0).getFirstChild().getNodeValue();String strYear = book.getElementsByTagName("year").item(0).getFirstChild().getNodeValue();String strPrice = book.getElementsByTagName("price").item(0).getFirstChild().getNodeValue();System.out.println("标题:" + strTitle);System.out.println("标题ID:" + strTid);System.out.println("作者:" + strAuthor);System.out.println("出版日期:" + strYear);System.out.println("价格:" + strPrice);}} catch (ParserConfigurationException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

二.Json数据解析

Example 1:

我们要解析一下一段键值对。

/*** * {   * "weatherinfo": *  * {"city":"北京", * "cityid":"101010100", * , * "WD":"西南风", * "WS":"1级","SD":"93%", * "WSE":"1","time":"08:45", * "isRadar":"1", * "Radar":"JC_RADAR_AZ9010_JB"} * } * */


注意:我们要用到一个org.json.jar包:

解析的过程是:

public static String setInit() throws JSONException {JSONObject json = new JSONObject();JSONObject js = new JSONObject();js.put("city", "北京");js.put("temp", "26");js.put("WD", "西南风");json.put("weatherinfo", js);return json.toString();}public static void getInit(String str) throws JSONException {JSONObject jsonObject = new JSONObject(str);JSONObject js = jsonObject.getJSONObject("weatherinfo");String a = js.getString("city");int b = js.getInt("temp");String c = js.getString("WD");System.out.println(a + b + c);}


测试代码:北京26西南风

Example 2:

升华一下:看看我们如何动态获取天气文本信息:

String urlstr = "http://www.weather.com.cn/data/sk/101010100.html";     try {URL url = new URL(urlstr);  //URL 统一资源定位符HttpURLConnection huc = (HttpURLConnection)url.openConnection();huc.setRequestMethod("GET");InputStreamReader is = new InputStreamReader(huc.getInputStream(),"UTF-8");BufferedReader bufferedReader = new BufferedReader(is);String mString = "";    String m = "";while ((m = bufferedReader.readLine())!=null) { mString+=m;}System.out.println(mString);getInit(mString);} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}

 

原创粉丝点击