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;
}

}