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

   <?xml version="1.0" encoding="UTF-8" ?>
- <menulist>
- <menu>
<id>1</id>
<typeId>1</typeId>
<name>水煮鱼</name>
<pic>test</pic>
<price>20</price>
<remark>test</remark>
</menu>
- <menu>
<id>2</id>
<typeId>2</typeId>
<name>凉拌西红柿</name>
<pic>tets</pic>
<price>10</price>
<remark>test</remark>
</menu>
- <menu>
<id>3</id>
<typeId>3</typeId>
<name>tofu</name>
<pic>test</pic>
<price>8</price>
<remark>test</remark>
</menu>
</menulist>

解析XML文件并把数据存储到数据库,前提是数据库里有Menu表,还要连接上SQLITE数据库,才能把数据存储到数据库,否则就会报错:

 private void uparse() {
// 访问服务器url
String urlStr = "http://192.168.40.11:8888/Server/servlet/MenuServlet";
try {
// 实例化URL对象
URL url = new URL(urlStr);
// 打开连接
URLConnection conn = url.openConnection();
// 获得输入流
InputStream in = conn.getInputStream();
// 实例化DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 实例化DocumentBuilder
DocumentBuilder builder = factory.newDocumentBuilder();
// 获得Document
Document doc = builder.parse(in);
// 获得节点列表
NodeList nl = doc.getElementsByTagName("menu");
// 获得访问数据接口ContentResolver
ContentResolver cr = getContentResolver();
// 访问数据的Uri
Uri uri1 = Menus.CONTENT_URI;
// 删除本地SQLite数据库中菜谱表中的数据
cr.delete(uri1, null, null); // 循环将数据保存到菜谱表
for (int i = 0; i < nl.getLength(); i++) {
// 实例化ContentValues
ContentValues values = new ContentValues();
// 解析XML文件获得菜单id
int id = Integer.parseInt(doc.getElementsByTagName("id")
.item(i).getFirstChild().getNodeValue());
// 名称
String name = doc.getElementsByTagName("name").item(i)
.getFirstChild().getNodeValue();
// 图片路径
String pic = doc.getElementsByTagName("pic").item(i)
.getFirstChild().getNodeValue();
// 价格
int price = Integer.parseInt(doc.getElementsByTagName("price")
.item(i).getFirstChild().getNodeValue());
// 分类编号
int typeId = Integer.parseInt(doc
.getElementsByTagName("typeId").item(i).getFirstChild()
.getNodeValue());
// 备注
String remark = doc.getElementsByTagName("remark").item(i)
.getFirstChild().getNodeValue(); // 添加到ContenValues对象
values.put("_id", id);
values.put("name", name);
values.put("price", price);
values.put("pic", pic);
values.put("typeId", typeId);
values.put("remark", remark);
// 插入到数据库
cr.insert(uri1, values);
}
} catch (Exception e) {
e.printStackTrace();
}
}

android开发 解析服务器端xml文件数据存储到android客户端SQLite数据库的更多相关文章

  1. Android开发之获取xml文件的输入流对象

    介绍两种Android开发中获取xml文件的输入流对象 第一种:通过assets目录获取 1.首先是在Project下app/src/main目录下创建一个assets文件夹,将需要获取的xml文件放 ...

  2. Android中数据存储(三)——SQLite数据库存储数据

    当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方式: 1. Share ...

  3. Android开发7:简单的数据存储(使用SharedPreferences)和文件操作

    前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...

  4. Android开发8:数据存储(二)——SQLite数据库和ContentProvider的使用

    前言 啦啦啦各位小伙伴们许久不见了~学期末和过年期间自己忙着做其他事没能及时更新Android开发系列课程的博客,实在是罪过罪过~ 好啦~废话不多说,进入我们今天的主题.今天我们将和大家学习其他的数据 ...

  5. Android开发8:数据存储(二)——SQLite数据库和ContentProvider的使用

    前言 啦啦啦各位小伙伴们许久不见了~学期末和过年期间自己忙着做其他事没能及时更新Android开发系列课程的博客,实在是罪过罪过~ 好啦~废话不多说,进入我们今天的主题.今天我们将和大家学习其他的数据 ...

  6. Android开发中string.xml文件的使用

    为什么需要把应用中出现的文字单独存放在string.xml文中呢? 一:是为了国际化,Android建议将在屏幕上显示的文字定义在strings.xml中,如果今后需要进行国际化,比如我们开发的应用本 ...

  7. 关于android开发添加菜单XML文件之后无法在R.java中生成ID的问题

    因为和同学分开做的android软件,现在想整合他做的界面部分,于是拷贝了res和src文件夹的文件,其中包括一个res.menu文件夹中的XML.但是每次将该文件导入到工程总无法自动在R.java中 ...

  8. Android开发,布局xml文件命名注意事项——不能包含任何大写字母

    转自:http://blog.sina.com.cn/s/blog_628b45090100zuit.html 在开发Android应用时,会接触到布局文件,一般在 工程名/res/layout/*. ...

  9. 使用dataview组件显示服务器端xml文件数据

    来自<sencha touch权威指南>,约193页开始 ------------------------------------- (1)app.js代码: Ext.require([' ...

随机推荐

  1. iOS Load方法 和 initialize方法的比较

    一.load方法特点: 1. 当类被引用进程序的时候会执行这个函数 2.一个类的load方法不用写明[super load],父类就会收到调用,并且在子类之前. 3.Category的load也会收到 ...

  2. HDU 4513 吉哥系列故事――完美队形II(Manacher)

    题目链接:cid=70325#problem/V">[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher V - 吉哥系列故事――完美队形I ...

  3. IntelliJ IDEA 添加类注释模板

    效果展示 /** * Created with IntelliJ IDEA * USER:jacun * CLASSNAME: HalloWorldController * DATE: 2019/1/ ...

  4. 安装Nginx 及使用

    1.下载 Nginx wget http://nginx.org/download/nginx-1.10.3.tar.gz   (稳定版) 2.提前下载好依赖包 openssl.zlib.pcre p ...

  5. 3django url name详解

    打开urls.py from django.conf.urls import url from django.contrib import admin from calc import views a ...

  6. iOS 展示 gif

    gif 图 是多张依次有连续动作的图 顺时间展示的一种动态效果图 .   有的是均匀时间更换下一张  有的 则不是均匀时间变化 1. 那么 对于均匀 时间变化的gif图 比较适合 使用 iOS 系统自 ...

  7. 【leetcode刷题笔记】Unique Binary Search Trees II

    Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...

  8. IE浏览器和CSS盒模型【转】

    总结:css盒模型在不同浏览器之间(例如:ie和其他浏览器 如火狐)的差异只存在于ie6之前的版本中,如ie5.在ie6下, Internet Explorer 在标准模式下渲染时使用了 CSS 规范 ...

  9. 使用Pydoc生成文档

    Python中本身带有很多实用的工具,如pydoc.pydoc模块主要用来从Python模块中提取信息并生成文档. 使用方法 在Windows和Linux下的使用方法有些区别. Windows pyt ...

  10. Spring Cloud之统一fallback接口

    每个方法都配备一个fallback方法 不利于开发的 用类的方式 并且整个方法都是在同一个线程池里面的 主要对于client的修改: pom: <project xmlns="http ...