android開發 解析服務器端xml文件數據存儲到android客戶端SQLite數據庫

 

 

如下面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     }
相關文章
相關標籤/搜索