XMl的解析
MainActivity
package com.example.secondweek_test2; import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException; import com.example.utils.NetWorkUtil; import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
import android.view.Menu; public class MainActivity extends Activity { private static final String ENDURL="http://10.1.2.175:8080/Day05_UrlCon/data.xml";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //初始化数据
init();
} private void init() { /**
* 请求服务器中xml文件
*/
//判断网络是否开通
if(NetWorkUtil.isAvailbale(MainActivity.this))//开通网络了
{
//请求网络数据
new MyAsyncTask().execute(ENDURL); } } class MyAsyncTask extends AsyncTask<String, Integer, InputStream>{ private List<Foods> list;
private String tag;
private Foods f; //耗时操作
@Override
protected InputStream doInBackground(String... params) { //向服务器请求数据
String url=params[0];
InputStream byClient = NetWorkUtil.getDataByClient(url);
System.out.println(byClient);
return byClient;
} //更新UI
@Override
protected void onPostExecute(InputStream result) { parserXml(result); System.out.println(list.toString());
super.onPostExecute(result);
} private void parserXml(InputStream result) {
//解析请求的数据
XmlPullParser parser=Xml.newPullParser();//获取解析器 try {
parser.setInput(result, "utf-8");
// 触发第一次事件
int type = parser.getEventType(); // 循环遍历
while (type != XmlPullParser.END_DOCUMENT)// 筛选的条件是不为结束文档
{
// 判断类型
switch (type) {
case XmlPullParser.START_DOCUMENT://开始文档 //创建集合对象
list = new ArrayList<Foods>(); break; case XmlPullParser.START_TAG://开始标签 //记录标签的名字
tag = parser.getName(); //判断是否为person
if(tag.equals("cate"))
{
//创建对象
f = new Foods(); //获取属性值
String id = parser.getAttributeValue(0); System.out.println(id);
//为person对象赋值
f.setId(Integer.parseInt(id));
} break;
case XmlPullParser.TEXT://文本标签 //获取文本标签的值
String text=parser.getText(); //判断文本标签是什么 if(tag.equals("cateurl"))
{
f.setCateurl(text); }else if(tag.equals("catetitle")){
f.setCatetitle(text);
}else if(tag.equals("catecontent")){
f.setCatecontent(text);
}else if(tag.equals("cateprice")){
f.setCateprice(text);
} break;
case XmlPullParser.END_TAG://结束标签 //记录结束标签的名字
tag=parser.getName(); //判断标签是扫描
if(tag.equals("cate"))
{
//向集合中添加对象
list.add(f); //将person对象制空
f=null;
} tag="";
break;
case XmlPullParser.END_DOCUMENT://结束文档 break;
} type=parser.next();//触发下一次事件
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }
网络请求
package com.example.utils; import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils; import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo; public class NetWorkUtil {
/*
private static BufferedInputStream is;*/
static InputStream is; public static boolean isAvailbale(Context context) {
// 获取网络的服务器
ConnectivityManager manager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE); // 获取网络信息
NetworkInfo info = manager.getActiveNetworkInfo(); if (info == null || !info.isAvailable()) {
return false;
} return true; } public static InputStream getDataByClient(String url) {
// 获取get请求对象
HttpGet get = new HttpGet(url); // 设置参数
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000); // 获取执行请求的对象
HttpClient client = new DefaultHttpClient(params); // 执行请求
try {
HttpResponse resp = client.execute(get); // 判断响应是否成功
if (resp.getStatusLine().getStatusCode() == 200) {
// 获取响应的数据
HttpEntity entity = resp.getEntity(); is= entity.getContent();
/*is = new BufferedInputStream(
new DataInputStream());*/ }
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return is;
} }
XMl的解析的更多相关文章
- 通过正则表达式实现简单xml文件解析
这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...
- JAVA 中XML的解析
XML: 可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...
- xml的解析与创建——bing到youdao导入文件的转换
首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...
- iOS-数据持久化基础-JSON与XML数据解析
解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...
- 八、Android学习第七天——XML文件解析方法(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...
- iOS边练边学--iOS中的XML数据解析
XML的解析方式 SAX 大小文件都可以 NSXMLParser DOM 最好是小文件 GDataXML NSXMLParser的用法 创建解析器来解析 // 创建XML解析器 NSXMLParser ...
- 转 web项目中的web.xml元素解析
转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45) 阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...
- iOS - XML 数据解析
前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...
- xml数据解析调研
XML数据解析http://www.tuicool.com/articles/Nraau2(必用) http://www.cnblogs.com/pengyingh/articles/2342699. ...
- XML JSON解析--基本功能
一,json的解析 json文件: {"code": "cn","cities": [{"name": " ...
随机推荐
- Win10如何开启IIS服务以及如何打开IIS管理器
一.开启IIS服务 1.右键点击开始菜单或者使用“win+x”组合键,如然后选择“控制面板”,下如: 2.再控制面板中选择“程序”-->“启动或关闭windows功能”,在弹出的对话框中勾选如下 ...
- iOS 集成银联支付
下载地址:https://open.unionpay.com/upload/download/Development_kit85427986.rar 其实我找了半个小时 也不知道怎么就下载好了 这个我 ...
- iOS 开发进程与线程
进程(process)是一块包含了某些资源的内存区域.操作系统利用进程把它的工作划分为一些功能单元.进程中所包含的一个或多个执行单元称为线程(thread).进程还拥有一个私有的虚拟地址空间,该空间仅 ...
- SQLServer如何处理数据集的维度变化
Student表有三列,分别是姓名.课程.成绩 Name Curricula Mark 张三 语文 70 李四 数学 80 王朝 英语 59 城南 马哲 70 王朝 语文 90 我想得到的效果是,列出 ...
- XtraBackup2.3.3安装配置使用(innobakupex)
通过使用percona公司的xtrabackup备份还原数据库,并完成搭建mysql主从数据库. 一.XtraBackup下载安装部分. 1.安装依赖软件. [root@localhost ~]# y ...
- wordpress 天气插件开发
<?php /* * author by:wordpress教程网(http://www.wpnoob.cn) * url: * */ class weatherWidget extends W ...
- 调试 rewrite
等号后面是变量 访问http://m-test.jinlianchu.com/member/register.html?inviteCode=jlc24639 的跳转到https://wx-test ...
- android Shader类简介_渲染图像示例
Android中提供了Shader类专门用来渲染图像以及一些几何图形,Shader下面包括几个直接子类,分别是BitmapShader. ComposeShader.LinearGradient.Ra ...
- CentOS 6.6 yum 搭建LAMP环境
CentOS 查看操作系统版本 [root@oa ~]# cat /etc/redhat-releaseCentOS release 6.6 (Final) 参考linux centos yum安装L ...
- css背景图片拉伸 以及100% 满屏显示
如何用css背景图片拉伸 以及100% 满屏显示呢?这个问题听起来似乎很简单.但是很遗憾的告诉大家.不是我们想的那么简单. 比如一个容器(body,div,span)中设定一个背景.这个背景的长宽值在 ...