MyXMLPullUtil.java:
package com.cz.xmlpull; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlSerializer; public class MyXMLPullUtil { private List<LinkMan> all = null; private OutputStream output = null; private InputStream input = null; public MyXMLPullUtil(OutputStream output, List<LinkMan> all) { this.output = output; this.all = all; } public MyXMLPullUtil(InputStream input) { this.input = input; } public void writeByXMLPull() throws Exception { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlSerializer xs = factory.newSerializer(); xs.setOutput(this.output, "UTF-8"); xs.startDocument("UTF-8", true); xs.startTag(null, "addresslist");// 根元素 Iterator<LinkMan> iter = this.all.iterator(); while (iter.hasNext()) { LinkMan man = iter.next(); xs.startTag(null, "linkman"); xs.startTag(null, "name"); xs.text(man.getName()); xs.endTag(null, "name"); xs.startTag(null, "email"); xs.text(man.getEmail()); xs.endTag(null, "email"); xs.endTag(null, "linkman"); } xs.endTag(null, "addresslist"); xs.endDocument(); xs.flush(); } public List<LinkMan> readByXMLPull() throws Exception { List<LinkMan> all = null; LinkMan man = null; String elementName = null; // 保存节点的名称 XmlPullParserFactory factory = XmlPullParserFactory.newInstance();// 取得XmlPullParserFactory类对象 XmlPullParser xmlPullParser = factory.newPullParser();// 取得XmlPullParser接口对象 xmlPullParser.setInput(this.input, "UTF-8"); int eventType = xmlPullParser.getEventType(); // 取得事件码 while (eventType != XmlPullParser.END_DOCUMENT) { // 不是文档底部 if (eventType == XmlPullParser.START_DOCUMENT) { // 文档开始 all = new ArrayList<LinkMan>(); } else if (eventType == XmlPullParser.START_TAG) { // 元素标记开始 elementName = xmlPullParser.getName(); // 取得元素的名称 if ("linkman".equals(elementName)) { man = new LinkMan(); } } else if (eventType == XmlPullParser.END_TAG) { // 结束元素 elementName = xmlPullParser.getName(); // 取得节点名称 if ("linkman".equals(elementName)) { all.add(man); man = null; } } else if (eventType == XmlPullParser.TEXT) { // 数据 if ("name".equals(elementName)) { man.setName(xmlPullParser.getText()); } else if ("email".equals(elementName)) { man.setEmail(xmlPullParser.getText()); } } eventType = xmlPullParser.next(); // 取得下一个事件码 } return all; } }
XMLPullActivity.java:
package com.cz.xmlpull; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import com.cz.test.R; public class XMLPullActivity extends Activity { private TextView name = null; private TextView email = null; private Button but_read = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.haha); writeByXMLPull(); readByXMLPull(); } private void writeByXMLPull() { if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { // 不存在不操作 return; // 返回到程序的被调用处 } File file = new File(Environment.getExternalStorageDirectory() + File.separator + "haha" + File.separator + "test.xml"); // 要输出文件的路径 if (!file.getParentFile().exists()) { // 文件不存在 file.getParentFile().mkdirs(); // 创建文件夹 } List<LinkMan> all = new ArrayList<LinkMan>(); for (int x = 0; x < 3; x++) { LinkMan man = new LinkMan(); man.setName("haha - " + x); man.setEmail("haha@sina.com"); all.add(man); } OutputStream output = null; try { output = new FileOutputStream(file); new MyXMLPullUtil(output, all).writeByXMLPull(); } catch (Exception e) { } finally { if (output != null) { try { output.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } private void readByXMLPull() { this.name = (TextView) super.findViewById(R.id.name); this.email = (TextView) super.findViewById(R.id.email); this.but_read = (Button) super.findViewById(R.id.but); this.but_read.setOnClickListener(new OnClickListenerImpl()); } private class OnClickListenerImpl implements OnClickListener { @Override public void onClick(View v) { if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { // 不存在不操作 return; // 返回到程序的被调用处 } File file = new File(Environment.getExternalStorageDirectory() + File.separator + "xdwang" + File.separator + "test.xml"); // 要输出文件的路径 if (!file.exists()) { // 文件不存在 return; } try { InputStream input = new FileInputStream(file); MyXMLPullUtil util = new MyXMLPullUtil(input); List<LinkMan> all = util.readByXMLPull(); XMLPullActivity.this.name.setText(all.get(0).getName()); XMLPullActivity.this.email.setText(all.get(0).getEmail()); } catch (Exception e) { e.printStackTrace(); } } } }
LinkMan.java:
package com.cz.xmlpull; public class LinkMan { private String name; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
相关推荐
在Android系统中,XML Pull解析是一种轻量级且高效的解析XML文档的方法,它允许应用程序按需读取XML文档的节点,而无需加载整个文档到内存中。以下是关于Android XML Pull解析的详细知识讲解。 1. **XML Pull解析器...
本文将深入探讨Android中的XML Pull解析,包括基本概念、使用方法以及本地和网络XML数据的处理。 一、XML Pull解析基础 XML Pull解析是一种事件驱动的解析方式,它不像DOM解析那样一次性加载整个XML文档到内存中,...
该文章详细介绍了在Android环境下如何使用SAX和PULL解析XML,包括代码示例和步骤说明,对于初学者来说非常有帮助。 最后,压缩包中的"Weather"文件很可能是示例的天气预报XML数据。通过实际解析这个文件,你可以更...
本文将深入探讨如何在Android中使用Pull解析器来处理XML文件,这是一种高效且节省资源的方式。 Pull解析器是Android提供的一个API,它允许应用程序通过事件驱动的方式解析XML文档。与SAX解析器类似,Pull解析器不...
本文将深入探讨如何在Android中使用Pull解析器解析XML文件。 一、XML Pull解析器简介 XML Pull解析器(XML Pull API)是一种基于事件驱动的解析模型,它不需预先加载整个XML文档,而是逐行读取,当遇到特定的XML...
"Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个...
本文将深入探讨如何在Android中使用PULL解析器(Pull Parser)来解析XML文档,这是一种轻量级且高效的解析方式。 **PULL解析器概述** PULL解析器(Pull Parsing)是一种事件驱动的解析模型,它不需要完整的XML文档...
在Android开发中,由于其轻量级和高效的特点,XML Pull解析器成为处理XML文档的一种常见方法。本DEMO主要展示了如何在Android项目中使用XML Pull解析技术。 XML Pull解析器的工作方式是基于事件驱动的,它会读取XML...
XML Pull解析是Android开发中处理XML数据的一种高效方式,它允许开发者通过事件驱动的模型来解析XML文档。在Android Studio中,使用XML Pull解析器可以帮助我们更有效地读取和处理XML内容,尤其对于大型XML文件,...
Android系统提供了一种轻量级的XML解析方式——PULL解析器(Pull Parser),它适用于处理大型XML文档,因为它不需要像DOM解析器那样一次性加载整个XML文档到内存中。PULL解析器通过事件驱动的方式,按需解析XML文档...
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
本文将深入探讨Android中的Pull解析XML技术,以及如何利用模板快速实现XML的解析。 首先,理解XML Pull解析器的工作原理是至关重要的。在Android中,XML Pull解析是一种轻量级处理XML文档的方式,它允许应用移动...
综上所述,"android pull解析 创建xmlw文件"的工程实例是学习和实践XML Pull解析在Android中创建XML文件的良好资源。通过这个项目,开发者可以深入理解XML Pull解析的工作原理,并掌握如何在Android中利用XML Pull...
本篇文章将详细介绍如何在Android中封装一个基于Pull解析的XML处理工具,并演示如何直接调用这个工具进行XML解析。 Android支持两种主要的XML解析方式:DOM(Document Object Model)解析和SAX(Simple API for XML...
本文主要关注Android中的Pull解析方式来处理XML,这是一种轻量级、低内存占用的解析方法。 **什么是XML Pull解析** XML Pull解析器(XML Pull Parser)是一种事件驱动的解析模型,它不需要完整的XML文档加载到内存...
总结,本教程介绍了如何在Android中使用PULL解析XML,以及如何结合ButterKnife进行视图绑定。PULL解析提供了高效且内存友好的方式处理XML数据,而ButterKnife则简化了UI组件的管理,两者结合能有效提升开发效率。...
本篇文章将深入探讨如何在Android中使用Pull解析器进行XML文件的解析和存取。 一、XML解析器简介 在Android中,有两种主要的XML解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是事件驱动...
本教程将详细介绍如何在Android中利用Pull解析器(PullParser)来读取XML文件,这是一种高效且内存友好的方式。 首先,让我们了解什么是Pull解析器。Pull解析器是一种事件驱动的解析模型,它不创建整个XML文档树,...
本文将深入探讨如何在Android中生成XML文件以及如何使用PULL解析器来解析XML数据。 首先,我们来看一下如何在Android中生成XML文件。生成XML文件通常涉及创建一个XMLWriter对象,然后通过调用其方法来添加元素、...
标题中的“pull解析器通用解析XML与生成XML”是指一种基于Pull解析模型处理XML文档的技术。在Android系统中,XML ...掌握XML Pull解析和生成技术对于Android开发者来说是必备技能之一,能够提高应用的性能和用户体验。