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": " ...
随机推荐
- iOS UPYUN(又拍云)使用总结
UPYUN,原来没用过,上个周用了一次,觉得蛮方便的,对于个人开发者,且没有服务器的,上传图片和文件,是个不二选择. 首先,先明白原理: 1.又拍云有一个上传空间,在这个空间里,有空间名称.密钥,其他 ...
- 如何去掉word的背影图片?
从网上下载下来的word资料总有背影图片,看的人很烦,网上有一些去除背景图片的方法,我找到一个不用去背景图片也行的方法:先选View,再选Draft,背景图片就正在最上面显示了,这时候你也可以选中图片 ...
- mysql中varchar(50)最多能存多少个汉字
首先要确定mysql版本4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节) 5.0版本以上,varchar(50),指的是50字符,无论存放 ...
- Python线程指南
本文介绍了Python对于线程的支持,包括“学会”多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例. 注意:本文基于Python2.4完成,:如果看到不明白的词汇请记得百度谷 ...
- Flask 与 Celery 在 windows 下的集成问题
Flask 与 Celery 在 windows 下的集成问题 所有的 Web 框架内部的视图中不适合执行需要长时间运行的任务,包括 Flask .Django 等.这类型的任务会阻塞 Web 的响应 ...
- Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget(转)
昨天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri))得到一个bit ...
- OC数组中文排序
-(void)sortStudentInfo { if(studentInfoArray && studentInfoArray.count > 0) { for(TWDetai ...
- Java基础之序列化对象——将对象写入到文件中(SerializeObjects)
控制台程序. 首先定义一个含有任意不同数据类型域的可序列化类: import java.io.Serializable; public class Junk implements Serializab ...
- mysql查找字符串出现位置
MySQL中的LOCATE和POSITION函数使用方法 FIND_IN_SET(str,strlist) 假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 ...
- 树形DP+RMQ+单调队列(Bob’s Race HDU4123)
题意:有n个房子,这些房子被n-1条道路连接,有一些运动员从一个房子为起点尽可能跑最远的距离且不能通过一条道路超过两次,这些运行员不能选择同样的起点,这些运动员跑的最远距离和最近距离的差值不能超过Q, ...