以下面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. 记录-springMVC访问web-inf下文件问题+在jsp页面导入jquery插件路径不对问题

    环境:spring + springMvc + mybatis + maven 关于在springMVC环境访问web-inf目录下文件,其一有在springMVC xml文件下加 <!-- 对 ...

  2. Django 视图之CBV

    CBV 所谓的CBV(class base view) 在视图里面,用类的方式来写逻辑 那么对于FBV,CBV有什么优势? CBV(class base views) 就是在视图里使用类处理请求. P ...

  3. go语言之并发编程一

    Go语言最大的优势就在于并发编程.Go语言的关键字go就是开启并发编程也就是goroutine的唯一途径.一条go语句以为着一个函数或方法的并发执行.Go语句是由go关键字和表达式组成.比如下面的这种 ...

  4. Cordova+FrameWork7开发简单教程

    1: 环境要有:(一个不会搭建环境的程序员,要么学,要么退出编程 ) 环境这里我只说需要什么: 1>AndroidStudio 3.0 (2.几的版本总会出问题.我喜欢用新版本) 2>co ...

  5. kettle连接资源库设置

    到这里你是登陆不上去的,需要创建或更新按钮,因为需要在你的数据库里创建关于kettle的数据表,来存储资源库 点执行就可以了 一般情况下kettle资源库自动给你创建两个用户: 工具->资源库- ...

  6. mac上傻瓜式java安装环境配置

    适用于mac新手用户或者黑苹果用户 首先,打开终端 输入 java -version 检查是否已安装好Java运行环境 显示我现在电脑没有安装 如果返回版本号,说明运行环境成功 对于windows用过 ...

  7. latex安装

    这里使用的是texlive + winedt方式 下载texlive2018, 使用window的bat文件安装,选项选择如下 具体配置可以参考如下网址 https://blog.csdn.net/w ...

  8. js hoisting

    1.变量提升 var x = 2; function test(){ console.log(x) var x = 1; } ==>运行程序报错,在test()函数中,x被提升到了顶部声明,相当 ...

  9. python链表的实现

    根据Problem Solving with Algorithms and Data Structures using Python 一书用python实现链表 书籍在线网址http://intera ...

  10. 319 Python基础之格式化输出、逻辑运算符、编码、in not in、while else、

    一.格式化输出 占位符%,字符串占位符%s,数字占位符%d 第一种name = input('姓名') age = input('年龄') hobby = input ("爱好") ...