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的解析的更多相关文章

  1. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  2. JAVA 中XML的解析

    XML:  可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...

  3. xml的解析与创建——bing到youdao导入文件的转换

    首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...

  4. iOS-数据持久化基础-JSON与XML数据解析

    解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...

  5. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

  6. iOS边练边学--iOS中的XML数据解析

    XML的解析方式 SAX 大小文件都可以 NSXMLParser DOM 最好是小文件 GDataXML NSXMLParser的用法 创建解析器来解析 // 创建XML解析器 NSXMLParser ...

  7. 转 web项目中的web.xml元素解析

    转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45)   阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...

  8. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...

  9. xml数据解析调研

    XML数据解析http://www.tuicool.com/articles/Nraau2(必用) http://www.cnblogs.com/pengyingh/articles/2342699. ...

  10. XML JSON解析--基本功能

    一,json的解析 json文件: {"code": "cn","cities":   [{"name": " ...

随机推荐

  1. How to Detect and Track Object With OpenCV

    http://www.intorobotics.com/how-to-detect-and-track-object-with-opencv/

  2. ELK-Python(三)

    不具有通用性,留作纪念. [root@GXB-CTRLCENTER python]# cat insert_uv.py #!/usr/bin/env python # -*- coding:utf-8 ...

  3. CentOS6.5Minimal安装Gitlab7.5

    文章出处:http://www.restran.net/2015/04/09/gilab-centos-installation-note/ 在 CentOS 6.5 Minimal 系统环境下,用源 ...

  4. 如何禁止DELETE、PUT、OPTIONS、TRACE、HEAD等协议访问应用程序 .

    原文:http://linder.iteye.com/blog/735435   简介 WebDAV (Web-based Distributed Authoring and Versioning)是 ...

  5. 第十一篇 SQL Server安全审核

    本篇文章是SQL Server安全系列的第十一篇,详细内容请参考原文. SQL Server审核SQL Server审核是指你可以在数据库或服务器实例监控事件.审核日志包含你选择捕获的事件的列表,在服 ...

  6. python_操作oracle数据库

    1. cx_Oracle Python 连接Oracle 数据库,需要使用cx_Oracle 包. 该包的下载地址:http://cx-Oracle.sourceforge.net/ 下载的时候,注意 ...

  7. INSIDE COM 最后一章例子 TANGRAM 编译笔记

    VS2013项目下载地址: http://pan.baidu.com/s/1gemrBrl 注册并运行: 使用管理员权限. 运行 REGISTER.BAT. 然后运行 TANGRAM.EXE 即可. ...

  8. iOS 本地加载html登陆页面

    Html的代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  9. ASP.NET MVC Filter

    http://stackoverflow.com/questions/6940371/asp-net-mvc-request-filters http://afana.me/post/aspnet-m ...

  10. C#并发处理-锁OR线程安全?

    每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客! 当然,题外话说多了,咱进入正题! 背景 基于任务的程序设计.命令式数据并行和任务并行都要求能够支持并发更新的数组.列表和集合 ...