如下面xml文件爲例對其解析(假設此xml就在服務器端Server項目下的servlet包下的MenuServlet文件的輸出流中):web
1 <?xml version="1.0" encoding="UTF-8" ?> 2 - <menulist> 3 - <menu> 4 <id>1</id> 5 <typeId>1</typeId> 6 <name>水煮魚</name> 7 <pic>test</pic> 8 <price>20</price> 9 <remark>test</remark> 10 </menu> 11 - <menu> 12 <id>2</id> 13 <typeId>2</typeId> 14 <name>涼拌西紅柿</name> 15 <pic>tets</pic> 16 <price>10</price> 17 <remark>test</remark> 18 </menu> 19 - <menu> 20 <id>3</id> 21 <typeId>3</typeId> 22 <name>tofu</name> 23 <pic>test</pic> 24 <price>8</price> 25 <remark>test</remark> 26 </menu> 27 </menulist>
解析XML文件並把數據存儲到數據庫,前提是數據庫裏有Menu表,還要鏈接上SQLITE數據庫,才能把數據存儲到數據庫,不然就會報錯:數據庫
1 private void uparse() { 2 // 訪問服務器url 3 String urlStr = "http://192.168.40.11:8888/Server/servlet/MenuServlet"; 4 try { 5 // 實例化URL對象 6 URL url = new URL(urlStr); 7 // 打開鏈接 8 URLConnection conn = url.openConnection(); 9 // 得到輸入流 10 InputStream in = conn.getInputStream(); 11 // 實例化DocumentBuilderFactory 12 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 13 // 實例化DocumentBuilder 14 DocumentBuilder builder = factory.newDocumentBuilder(); 15 // 得到Document 16 Document doc = builder.parse(in); 17 // 得到節點列表 18 NodeList nl = doc.getElementsByTagName("menu"); 19 // 得到訪問數據接口ContentResolver 20 ContentResolver cr = getContentResolver(); 21 // 訪問數據的Uri 22 Uri uri1 = Menus.CONTENT_URI; 23 // 刪除本地SQLite數據庫中菜譜表中的數據 24 cr.delete(uri1, null, null); 25 26 // 循環將數據保存到菜譜表 27 for (int i = 0; i < nl.getLength(); i++) { 28 // 實例化ContentValues 29 ContentValues values = new ContentValues(); 30 // 解析XML文件得到菜單id 31 int id = Integer.parseInt(doc.getElementsByTagName("id") 32 .item(i).getFirstChild().getNodeValue()); 33 // 名稱 34 String name = doc.getElementsByTagName("name").item(i) 35 .getFirstChild().getNodeValue(); 36 // 圖片路徑 37 String pic = doc.getElementsByTagName("pic").item(i) 38 .getFirstChild().getNodeValue(); 39 // 價格 40 int price = Integer.parseInt(doc.getElementsByTagName("price") 41 .item(i).getFirstChild().getNodeValue()); 42 // 分類編號 43 int typeId = Integer.parseInt(doc 44 .getElementsByTagName("typeId").item(i).getFirstChild() 45 .getNodeValue()); 46 // 備註 47 String remark = doc.getElementsByTagName("remark").item(i) 48 .getFirstChild().getNodeValue(); 49 50 // 添加到ContenValues對象 51 values.put("_id", id); 52 values.put("name", name); 53 values.put("price", price); 54 values.put("pic", pic); 55 values.put("typeId", typeId); 56 values.put("remark", remark); 57 // 插入到數據庫 58 cr.insert(uri1, values); 59 } 60 } catch (Exception e) { 61 e.printStackTrace(); 62 } 63 }