android开发 解析服务器端xml文件数据存储到android客户端SQLite数据库
以下面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数据库的更多相关文章
- Android开发之获取xml文件的输入流对象
介绍两种Android开发中获取xml文件的输入流对象 第一种:通过assets目录获取 1.首先是在Project下app/src/main目录下创建一个assets文件夹,将需要获取的xml文件放 ...
- Android中数据存储(三)——SQLite数据库存储数据
当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方式: 1. Share ...
- Android开发7:简单的数据存储(使用SharedPreferences)和文件操作
前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...
- Android开发8:数据存储(二)——SQLite数据库和ContentProvider的使用
前言 啦啦啦各位小伙伴们许久不见了~学期末和过年期间自己忙着做其他事没能及时更新Android开发系列课程的博客,实在是罪过罪过~ 好啦~废话不多说,进入我们今天的主题.今天我们将和大家学习其他的数据 ...
- Android开发8:数据存储(二)——SQLite数据库和ContentProvider的使用
前言 啦啦啦各位小伙伴们许久不见了~学期末和过年期间自己忙着做其他事没能及时更新Android开发系列课程的博客,实在是罪过罪过~ 好啦~废话不多说,进入我们今天的主题.今天我们将和大家学习其他的数据 ...
- Android开发中string.xml文件的使用
为什么需要把应用中出现的文字单独存放在string.xml文中呢? 一:是为了国际化,Android建议将在屏幕上显示的文字定义在strings.xml中,如果今后需要进行国际化,比如我们开发的应用本 ...
- 关于android开发添加菜单XML文件之后无法在R.java中生成ID的问题
因为和同学分开做的android软件,现在想整合他做的界面部分,于是拷贝了res和src文件夹的文件,其中包括一个res.menu文件夹中的XML.但是每次将该文件导入到工程总无法自动在R.java中 ...
- Android开发,布局xml文件命名注意事项——不能包含任何大写字母
转自:http://blog.sina.com.cn/s/blog_628b45090100zuit.html 在开发Android应用时,会接触到布局文件,一般在 工程名/res/layout/*. ...
- 使用dataview组件显示服务器端xml文件数据
来自<sencha touch权威指南>,约193页开始 ------------------------------------- (1)app.js代码: Ext.require([' ...
随机推荐
- iOS Load方法 和 initialize方法的比较
一.load方法特点: 1. 当类被引用进程序的时候会执行这个函数 2.一个类的load方法不用写明[super load],父类就会收到调用,并且在子类之前. 3.Category的load也会收到 ...
- HDU 4513 吉哥系列故事――完美队形II(Manacher)
题目链接:cid=70325#problem/V">[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher V - 吉哥系列故事――完美队形I ...
- IntelliJ IDEA 添加类注释模板
效果展示 /** * Created with IntelliJ IDEA * USER:jacun * CLASSNAME: HalloWorldController * DATE: 2019/1/ ...
- 安装Nginx 及使用
1.下载 Nginx wget http://nginx.org/download/nginx-1.10.3.tar.gz (稳定版) 2.提前下载好依赖包 openssl.zlib.pcre p ...
- 3django url name详解
打开urls.py from django.conf.urls import url from django.contrib import admin from calc import views a ...
- iOS 展示 gif
gif 图 是多张依次有连续动作的图 顺时间展示的一种动态效果图 . 有的是均匀时间更换下一张 有的 则不是均匀时间变化 1. 那么 对于均匀 时间变化的gif图 比较适合 使用 iOS 系统自 ...
- 【leetcode刷题笔记】Unique Binary Search Trees II
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...
- IE浏览器和CSS盒模型【转】
总结:css盒模型在不同浏览器之间(例如:ie和其他浏览器 如火狐)的差异只存在于ie6之前的版本中,如ie5.在ie6下, Internet Explorer 在标准模式下渲染时使用了 CSS 规范 ...
- 使用Pydoc生成文档
Python中本身带有很多实用的工具,如pydoc.pydoc模块主要用来从Python模块中提取信息并生成文档. 使用方法 在Windows和Linux下的使用方法有些区别. Windows pyt ...
- Spring Cloud之统一fallback接口
每个方法都配备一个fallback方法 不利于开发的 用类的方式 并且整个方法都是在同一个线程池里面的 主要对于client的修改: pom: <project xmlns="http ...