zoukankan      html  css  js  c++  java
  • android开发 解析服务器端xml文件数据存储到android客户端SQLite数据库

    以下面xml文件为例对其解析(假设此xml就在服务器端Server项目下的servlet包下的MenuServlet文件的输出流中):

     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     }
  • 相关阅读:
    k3 cloud套打模板中出现单元格数据为空的情况,及无法正确的选择数据源
    k3 cloud中列表字段汇总类型中设置了汇总以后没有显示出汇总值
    k3 cloud查看附件提示授予目录NetWorkService读写权限
    k3 cloud中提示总账期末结账提示过滤条件太长,请修改此过滤条件
    金蝶云k3 cloud采购入库单校验日期不通过
    C# Code First 配置(二)
    C# Azure 远程调试
    C# ABP源码详解 之 BackgroundJob,后台工作(一)
    C# 在webapi项目中配置Swagger(最新版2017)
    高并发之
  • 原文地址:https://www.cnblogs.com/cuixiaodong427/p/3149899.html
Copyright © 2011-2022 走看看