麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

XML及PullParser解析

2019-11-14 14:55:53
字體:
來源:轉載
供稿:網友

一.什么是xml

1、概念:extensive markup language(可擴展的標記語言)
  XML是一種通用的數據存儲和交換格式,與平臺無關,與編程語言無關,與操作系統無關。給數據集成和交互提供了極大的便利。將數據格式化成XML文件后,真正實現了據跨平臺的交互和共享。在不同語言中,xml的解析方式都一樣。
2、XML的解析:xml parse
  對xml文件進行閱讀和分析,提取出希望的數據和數據屬性。在android開發中,將xml解析后,把數據放進List<Map<String, Object>>集合中是我們的最終目的。
3、 XML的解析方式:
  DOM(document object model  :文檔對象模型):借助文檔樹模型對xml文檔進行分析
  SAX(simple API for xml  :xml的簡單api):利用事件流的形式解析XML
  PULL:利用事件流模型來解析XML
  備注:DOM和SAX解析的優劣分析:DOM是將文檔一次性讀入到內存,然后以文檔樹模進行分析節點信息。獲取到希望獲取的數據;而SAX是事件流的形式去分析xml文件。 DOM可以做到對文檔中部分節點的修改、刪除和新增,而SAX無法做到。
4、XML文件格式:
  每一個XML有且只有一個根節點;
  XML文件的數據中不可以 出現"< "或者" >";

二、DOM解析xml

1、核心類:
DocumentBuilderFactory
DocumentBuilder
Doucment
Element
NodeList
Node
 
2、核心代碼:
   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   // 使用工廠來實例化一個構造Document的對象                        DocumentBuilder builder = factory.newDocumentBuilder(); // 利用DocumentBuilder來構造一個Document對象   Document document = builder.parse(filename);  // 獲取Document文檔的根節點對象   Element root = document.getDocumentElement();  // 通過根節點,獲取到根節點下面的所有二級子節點   NodeList nodeList = root.getChildNodes();     // 遍歷子節點,獲取內部的每一個節點   for (int i = 0; i < nodeList.getLength(); i++) {    Node node = nodeList.item(i);               // 獲取每個末端階段的文本值和節點名稱,將其存入到Map對象中               map.put(item.getNodeName(), item.getTextContent());     list.add(map);   }

 三、PULL解析xml

1、核心類:
XmlPullParserFactory
XmlPullParser
2、核心代碼:
 1 // 實例化一個xml pull解析的工廠 2 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 3 // 實例化一個xml pull解析對象 4 XmlPullParser pullParser = factory.newPullParser(); 5 // 將xml文件作為流傳入到inputstream 6 BufferedInputStream bis = new BufferedInputStream( 7 new FileInputStream("customers.xml")); 8   9 // xml解析對象接收輸入流對象10 pullParser.setInput(bis, "utf-8");11  12 int event = pullParser.getEventType();13 List<Map<String, Object>> list = null;14 Map<String, Object> map = null;15  16 while (event != XmlPullParser.END_DOCUMENT) {17 switch (event) {18 case XmlPullParser.START_DOCUMENT:19 list = new ArrayList<>();20 break;21 case XmlPullParser.START_TAG:22 if ("customer".equals(pullParser.getName())) {23 map = new HashMap<String, Object>();24 }25 if (pullParser.getName().equals("name")) {26 map.put("name", pullParser.nextText());27 }28 if (pullParser.getName().equals("tel")) {29 map.put("tel", pullParser.nextText());30 }31 // if (pullParser.getName().equals("email")) {32 // map.put("email", pullParser.nextText());33 // }34 break;35 case XmlPullParser.END_TAG:36 if (pullParser.getName().equals("customer")) {37 list.add(map);38 }39 break;40 }41 event = pullParser.next();42 }

 

3、pull解析方式和dom解析的區別:
pull解析中使用了switch case,所以可以獲取客戶希望獲取到的內容,而不用對整個xml文件進行解析。
 
4、pull parser的使用:(簡單易用)
只有一個關鍵方法key(),用于檢索下一個事件,只有五個事件類型。

四、DOM TREE結構中對節點的分類

1、文檔節點
2、元素節點
3、屬性節點
4、文本節點
5、注釋節點

五、PULL PARSER中的幾種event值:

1、START_DOCUMENT: 0
2、END_DOCUMENT: 1
3、START_TAG: 2
4、END_TAG: 3
5、TEXT: 4

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美人一级淫片a免费播放 久久久久久久久91 国产99久久久久久免费看 | 欧美黄色大片免费观看 | 最新午夜综合福利视频 | 毛片在哪里看 | 午夜久久久精品一区二区三区 | 午夜男人免费视频 | 亚洲成人精品在线 | 免费在线观看国产精品 | 亚洲男人的天堂在线视频 | 爱视频福利 | 欧美日韩一区,二区,三区,久久精品 | 成人在线观看地址 | 久章草在线视频 | 日本欧美国产 | 最新av免费网址 | 美女一级视频 | av免费在线不卡 | hdhdhd79xxxxх| 免费毛片视频播放 | 亚洲精品无码不卡在线播放he | 欧美14一15sex性hd | 国产精品99久久久久久大便 | 一区国产在线观看 | 久久色伦理资源站 | 特级a欧美做爰片毛片 | 99爱国产精品 | 污片视频在线观看 | 午夜精品在线视频 | 亚洲va久久久噜噜噜久牛牛影视 | 国产98色| 久久精品视频一区二区三区 | 中文字幕在线观看www | a一级黄色大片 | 久久99精品久久久久久小说 | 日本高清黄色片 | 黄色小视频免费在线观看 | 一级做a爱片性色毛片 | 久久最新免费视频 | 日本欧美一区二区三区在线播 | 亚洲一区二区免费 | 国产精品免费小视频 |