package com.pt.http01; import android.os.Handler; import android.widget.TextView; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * Created by 韬 on 2016-05-14. */ public class XmlThread extends Thread{ private String url; private Handler handler; private TextView tv_result; public XmlThread(String url, Handler handler, TextView tv_result) { this.url = url; this.handler = handler; this.tv_result = tv_result; } @Override public void run() { try { //连接,并且得到XML文件的输入流 URL connurl = new URL(url); HttpURLConnection conn = (HttpURLConnection) connurl.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(5000); InputStream in = conn.getInputStream(); //得到Pull解析器 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput(in,"UTF-8"); //创建存储XML的集合 final List<People> peoples = new ArrayList<>(); //得到标签的类型 int eventType = parser.getEventType(); People people = null; while(eventType != XmlPullParser.END_DOCUMENT){ //得到标签的名字 String data = parser.getName(); switch (eventType){ case XmlPullParser.START_TAG: //people开始标签创建实例 if("people".equals(data)){ people = new People(); } //属性name标签给实例设置属性 if("name".equals(data)){ people.setName(parser.nextText()); } if("age".equals(data)){ people.setAge(Integer.parseInt(parser.nextText())); } if("school".equals(data)){ people.setSchool(parser.nextText()); } break; case XmlPullParser.END_TAG: //当为people字符串结束标签时,将实例添加进入集合 if("people".equals(data) && people != null){ peoples.add(people); } break; } //手动的调用时间处理的方法 eventType = parser.next(); } handler.post(new Runnable() { @Override public void run() { tv_result.setText(peoples.toString()); } }); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } } }
相关推荐
在Android开发中,XML(eXtensible Markup Language)是一种常用的数据存储和交换格式,尤其在应用程序的配置、布局和网络通信中发挥着重要作用。XML的结构清晰,易于人类阅读和机器解析,使得它成为Android平台上的...
总结,Android的Pull解析XML文件是一种高效、节省资源的解析方式,适用于网络通信中的数据交换。通过创建Pull解析器实例,监听XML事件,以及适当优化,开发者可以轻松处理XML数据,实现更流畅的用户体验。在实际开发...
总结,XML解析是Android开发中的基础技能,了解并掌握DOM和SAX解析方式可以帮助开发者更有效地处理XML文件。选择合适的解析方式取决于具体的应用场景和性能需求。在实际项目中,还有一种基于SAX的拉式解析库——PULL...
本文将深入探讨如何在Android中生成XML文件以及如何使用PULL解析器来解析XML数据。 首先,我们来看一下如何在Android中生成XML文件。生成XML文件通常涉及创建一个XMLWriter对象,然后通过调用其方法来添加元素、...
XML解析在Android中的重要性不言而喻,因为XML常被用来描述应用程序的配置、布局,甚至是网络通信的数据交换格式。Java提供了多种XML解析方式,如DOM(Document Object Model)、SAX(Simple API for XML)和PULL...
Android支持多种XML解析技术,包括DOM、SAX和Pull解析。每种方法都有其特定的优势和应用场景。 #### DOM解析XML DOM(Document Object Model)解析是一种将整个XML文档加载到内存中,并构建出一棵树状结构(称为DOM...
在Android Mars项目中,视频代码可能展示了如何使用Android的内置XML解析库,如`XmlPullParser`或`XmlResourceParser`来解析XML文件。`XmlPullParser`是基于SAX解析器的轻量级API,它提供了一种顺序访问XML文档的...
在Android中,有两种主要的XML解析方式:DOM(文档对象模型)和SAX(简单API for XML)。 1. DOM解析: DOM解析器会加载整个XML文档到内存中,形成一棵树形结构,每个节点代表XML文档的一部分。这种方式便于遍历和...
Pull解析器是Android特有的轻量级XML解析方式,适合处理大型XML文件。`PullForXml`示例中,可能涉及以下步骤: 1. 引入`org.xmlpull.v1.XmlPullParserFactory`和`XmlPullParser`,创建`XmlPullParser`实例。 2. 设置...
在Android平台上,XML(eXtensible Markup ...在提供的压缩包文件"AndroidXml"中,可能包含了一个简单的Android项目,演示了上述的XML解析过程。你可以通过运行这个示例来更深入地理解Android中XML在线解析的实现。
二、Android中的XML解析库 1. Android自带的XmlPullParser:这是Android系统提供的一个接口,用于实现Pull解析,它可以顺序读取XML文档并返回当前解析到的事件类型。 2. org.xmlpull.v1.XmlPullParserFactory:这...
在`XMLRequest`中,重写`parseNetworkResponse()`方法,这里我们将使用`XmlPullParserFactory`和`XmlPullParser`进行XML解析。 以下是一个简单的`XMLRequest`示例: ```java public class XMLRequest extends ...
总之,《老罗Android开发视频教程》中关于XML解析的内容,旨在帮助开发者掌握不同解析方法,以便在实际项目中灵活选择和应用,提高应用的性能和用户体验。通过学习和实践,开发者能更好地理解和处理XML数据,提升...
总的来说,Android的Pull解析器不仅用于解析XML,还能用于生成XML文件,这在某些场景下非常有用,例如自定义数据格式的存储或网络通信中的数据序列化。通过Pull解析器生成XML,开发者可以精确地控制XML的结构和内容...
在Android应用开发中,网络通信是必不可少的一部分,而数据交换格式的选择直接影响到应用程序的性能和效率。本篇文章将深入探讨如何使用SAX(Simple API for XML)方式解析XML数据,这是Android网络通信中处理XML...
本案例主要讲解如何在Android应用中通过网络通信发送XML数据到Web服务器,从而实现数据交换。 首先,我们需要理解XML(eXtensible Markup Language),它是一种用于标记数据的语言,具有良好的可读性和可扩展性。在...
总结来说,Android提供了SAX、DOM和Pull三种XML解析方式,每种都有其适用场景。SAX适用于内存有限和性能要求高的情况,DOM适用于需要频繁查询和修改XML结构的场景,而Pull解析器则结合了两者优点,既高效又易用。...
本篇文章将深入探讨Android中解析XML和生成XML的方法。 ### 解析XML 在Android中,有两种主要的解析XML的方式:DOM解析和SAX解析。 #### DOM解析 DOM(Document Object Model)解析器将整个XML文件加载到内存中,...
本实例——“xml航班解析实例”,提供了一个全项目的压缩包,包含了源代码和注释,方便个人学习和理解XML解析在安卓应用中的具体应用。 在安卓应用中,XML解析主要分为两种方式:DOM(Document Object Model)解析...
在AndroidManifest.xml文件中添加Internet权限,`<uses-permission android:name="android.permission.INTERNET" />`,否则无法进行网络访问。 5. **HTTPS与安全**: 对于涉及敏感数据的通信,应使用HTTPS协议,...