- 浏览: 57384 次
- 性别:
- 来自: 北京
博客专栏
-
设计模式
浏览量:7377
文章分类
最新评论
-
alixjiang:
getInstance应该在同步锁的保护之下吧
设计模式-单例模式 -
再_见孙悟空:
就是信息的转发
设计模式-中介者模式 -
DanielHan:
中介者模式中,中介者参与同事角色之间的通信方式,使用的是观察者 ...
设计模式-中介者模式 -
net_hare:
这个和观察者模式有什么区别
设计模式-中介者模式 -
xinglan500:
用代码解释很好哦。多谢博主啦。
JAVA反射机制之一
1.读
LinkMan.java
XmlPullUtil.java
Main.java
2.写
XmlPullUtil.java
Main.java
LinkMan.java
package com.example.xmlpulldemo; 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; } }
XmlPullUtil.java
package com.example.xmlpulldemo; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; public class XmlPullUtil { private InputStream input; private List<LinkMan> all=null; private String curElement=null; private LinkMan man=null; public XmlPullUtil(InputStream input) { this.input = input; } public List<LinkMan> getAll(){ XmlPullParserFactory factory=null; XmlPullParser parser=null; try { factory=XmlPullParserFactory.newInstance(); parser=factory.newPullParser(); parser.setInput(input, "UTF-8"); int eventType=parser.getEventType();//事件码 while(eventType!=XmlPullParser.END_DOCUMENT){ switch(eventType){ case XmlPullParser.START_DOCUMENT: all=new ArrayList<LinkMan>(); break; case XmlPullParser.START_TAG: curElement=parser.getName(); if(curElement.equals("linkman")){ man=new LinkMan(); } break; case XmlPullParser.TEXT: if(curElement.equals("name")){ man.setName(parser.getText()); }else if(curElement.equals("email")){ man.setEmail(parser.getText()); } break; case XmlPullParser.END_TAG: curElement=parser.getName(); if(curElement.equals("linkman")){ all.add(man); man=null; } break; case XmlPullParser.END_DOCUMENT: break; default: break; } eventType=parser.next(); } } catch (Exception e) { e.printStackTrace(); } return all; }; }
Main.java
package com.example.xmlpulldemo; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.widget.TextView; import android.widget.Toast; public class Main extends Activity { private TextView name=null; private TextView email=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); name=(TextView)findViewById(R.id.name); email=(TextView)findViewById(R.id.email); if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File file=new File(Environment.getExternalStorageDirectory()+File.separator+"files/addresslist.xml"); if(!file.exists()){//文件不存在 return; } InputStream input=null; try { input = new FileInputStream(file); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } XmlPullUtil util=new XmlPullUtil(input); List<LinkMan> all=util.getAll(); name.setText(all.get(0).getName()); email.setText(all.get(0).getEmail()); }else{ Toast.makeText(this, "没有sdcard", Toast.LENGTH_LONG).show(); } } }
2.写
XmlPullUtil.java
package com.example.xmlpulldemo; import java.io.OutputStream; import java.util.Iterator; import java.util.List; import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlSerializer; public class XmlPullUtil { private OutputStream output; private List<LinkMan> all; public XmlPullUtil(OutputStream output,List<LinkMan> all) { this.output=output; this.all=all; } public void save(){ XmlPullParserFactory factory=null; XmlSerializer xs=null; try { factory=XmlPullParserFactory.newInstance(); xs=factory.newSerializer(); xs.setOutput(output, "UTF-8"); xs.startDocument("UTF-8", true); xs.startTag(null, "addresslist"); Iterator<LinkMan> iterator=all.iterator(); while(iterator.hasNext()){ LinkMan man=iterator.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(); } catch (Exception e) { e.printStackTrace(); } }; }
Main.java
package com.example.xmlpulldemo; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.widget.Toast; public class Main extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File file=new File(Environment.getExternalStorageDirectory()+File.separator+"files/demo.xml"); if(!file.getParentFile().exists()){ file.getParentFile().mkdirs(); } List<LinkMan> all=new ArrayList<LinkMan>(); for(int i=0;i<2;i++){ LinkMan man=new LinkMan(); man.setName("DanielHan"+i); man.setEmail(i+"@qq.com"); all.add(man); } try { XmlPullUtil util=new XmlPullUtil(new FileOutputStream(file), all); util.save(); } catch (FileNotFoundException e) { e.printStackTrace(); } }else{ Toast.makeText(this, "没有sdcard", Toast.LENGTH_LONG).show(); } } }
发表评论
-
Android中path的arcTo方法的使用
2014-09-26 16:28 1263该方法的声明为: void Android.graphics ... -
drawable不同目录你会怎么选择(Android)
2014-09-26 15:18 690可以接触Android的会有一个疑问,为什么res下面会有这么 ... -
android调用手机联系人
2014-09-24 14:11 0一.选择联系人 startActivityForResul ... -
Android中全屏无标题设置
2014-09-24 13:06 586方法一:在java代码中实现 this.requestWi ... -
tools:context的作用
2014-08-05 13:32 629tools:context="activity na ... -
Android平台调用WebService详解
2014-08-05 10:32 553http://blog.csdn.net/lyq8479/ar ... -
Android开发之WebService介绍
2014-08-05 10:31 597http://blog.csdn.net/lyq8479/ar ... -
Handler
2014-07-16 16:43 562Android中有着和J2SE ... -
java中的匿名内部类总结
2014-07-16 14:45 452匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部 ... -
两分钟彻底让你明白Android Activity生命周期(图文)!
2014-07-16 09:39 621大家好,今天给大家详解一下Android中Activity的生 ... -
StateListDrawable资源
2014-07-15 21:18 1332StateListDrawable用于组织多个Draw ... -
Android home键和back键区别
2014-07-15 13:04 861back键 Android的程序无需刻意的去退出,当你一按下手 ... -
ImageView的ScaleType属性
2014-07-15 12:54 1017图片说明Andorid中ImageView的不同属性Scale ... -
存储方式三:数据库SQLite(SQLiteOpenHelper)
2014-07-09 18:23 594SQLHelper.java package com.ex ... -
存储方式二:文件(XML SAX解析)
2014-07-08 19:40 406LinkMan.java package com.exam ... -
存储方式二:文件(XML DOM解析)
2014-07-08 19:41 4541.写 package com.example.filed ... -
存储方式二:文件(raw下的文本文件)
2014-07-08 13:47 733package com.example.filedemo; ... -
存储方式二:文件(文本文件)
2014-07-08 13:37 569一.写 FileOutputStream output ... -
存储方式一:SharedPreferences
2014-07-08 10:08 417一.添加数据 SharedPreferences shar ... -
四大组件-ContentProvider
2014-07-07 22:25 0一.简介 ContentProvider即内容提供器, ...
相关推荐
在处理XML文件时,有多种解析方式,其中XMLPull解析是一种轻量级、高效的解析方法,适用于资源有限的环境,如移动设备。XMLPull解析器允许应用程序以拉取(pull)的方式逐个读取XML元素,而不是等待整个文档加载完毕...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于网络数据交换、配置文件存储等场景。在Android开发中,XML解析是处理XML文档不可或缺的技术,主要包括DOM(Document Object Model)、SAX...
在Android开发中,XMLPull解析器被广泛使用,因为它不需要完整的DOM树(Document Object Model)来存储XML文档,而是通过事件驱动的方式解析XML内容。这种方式既节省内存,又提高了性能。 XMLPull的基本原理是,它...
XMLPull是轻量级的API,用于解析XML文档,它允许开发者以事件驱动的方式处理XML流,而无需提前加载整个文档到内存中。 XStream的核心功能在于它的“marshalling”和“unmarshalling”能力。Marshalling是将Java对象...
在Android开发中,XML文件广泛用于存储数据,如布局文件、配置文件等。"Andrond xml文件解析器"是一个针对Android平台的简单XML解析工具,它提供了三种不同的解析方法,便于开发者根据需求选择合适的方式读取和处理...
2. SAX解析:Simple API for XML,采用事件驱动模型,逐行读取XML文件,遇到元素、属性等时触发相应事件。SAX解析器占用内存小,适合处理大文件,但需要编写更多事件处理代码。 四、XML解析实例 在手机应用中,解析...
Pull解析器是Android特有的轻量级XML解析方式,适合处理大型XML文件。`PullForXml`示例中,可能涉及以下步骤: 1. 引入`org.xmlpull.v1.XmlPullParserFactory`和`XmlPullParser`,创建`XmlPullParser`实例。 2. 设置...
在IT行业中,XML(eXtensible Markup Language)是一种重要的数据交换格式,广泛应用于网络通信、数据存储和配置文件等领域。本篇文章将深入探讨如何使用Pull解析器来读取XML文件,以及如何生成XML文件。Pull解析器...
3. 循环解析:通过循环调用`parser.next()`,获取XML事件,并根据事件类型进行处理。 ```java int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { if (eventType == ...
1. XMLPull解析: XMLPull是一种轻量级的解析器,适用于资源有限的环境,如移动设备。它不需预先加载整个XML文档,而是采用拉(pull)的方式,允许应用程序按需读取XML元素。开发者通过创建XMLPullParser对象,然后...
在Android开发中,XML文件常用于存储数据,如配置文件、布局文件等。Pull解析器是一种轻量级的解析方式,适用于处理XML流,尤其在内存有限的移动设备上更为适用。本文将深入探讨如何在Android中使用Pull解析器解析...
例如,在Java中,SAX解析可以使用`org.xml.sax`包,DOM解析可以使用`javax.xml.parsers`包,而XML Pull解析可以使用`org.xmlpull.v1`包(如kxml2或StaX)。在实现时,需要根据解析方法的特性编写相应的代码逻辑,...
XMLPull解析器是一种事件驱动的解析方式,它不会一次性加载整个XML文档到内存中,而是通过阅读XML文档的各个节点,触发相应的事件(如START_DOCUMENT、START_TAG、END_TAG等)。这样既节省了内存,又提高了解析速度...
在Android中,我们使用`org.xmlpull.v1.XmlPullParser`接口来实现XML Pull解析。这个接口提供了诸如`next()`、`getName()`、`getText()`等方法,帮助我们按需读取XML文档的各个部分。Android还提供了`...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件开发、Web服务和数据交换等领域。本教程将详细介绍三种主要的XML解析方式:DOM(Document Object Model)、SAX(Simple API ...
这个"android XML文件解析和序列化 demo"旨在教你如何处理XML数据,包括解析XML文件以获取信息并将其存储为对象,以及将这些对象序列化回XML文件。下面我们将详细探讨这两个关键过程。 **XML解析** 1. **DOM解析器...
在Android开发中,XML文件广泛用于存储数据、配置和用户界面布局。XML解析是将XML数据转换为程序可处理的数据结构的关键步骤。本篇将深入探讨Android中的XML解析,包括DOM解析、SAX解析和Pull解析,以及如何生成XML...
XMLPull解析器是一种轻量级、高效的解析XML的方式,它不需要完整的DOM树(文档对象模型)或者SAX(简单API for XML)事件驱动模型。本教程将深入探讨Android中的XMLPull解析,并通过具体的源代码分析来帮助理解其...
本篇将详细讲解在Android环境中,如何使用DOM、PULL和SAX三种解析方式来处理XML文件。 一、DOM解析方式 DOM(Document Object Model)解析器将整个XML文档加载到内存中,形成一个树形结构,方便开发者通过节点操作...
其次,Pull解析器是一种事件驱动的解析方式,它不将整个文件加载到内存,而是按需读取XML数据。这种方式适用于处理大型XML文件,因为它节省了内存。Android提供了`org.xmlpull.v1.XmlPullParser`接口,开发者可以...