res/layout/main014.xm

View Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation
="vertical" android:layout_width="fill_parent"
android:layout_height
="fill_parent">
<TextView android:text="用户Id" android:layout_width="wrap_content"
android:layout_height
="wrap_content"></TextView>
<EditText android:text="" android:layout_width="fill_parent"
android:layout_height
="wrap_content" android:id="@+id/userid"
android:singleLine
="true"></EditText>
<TextView android:text="用户名" android:layout_width="wrap_content"
android:layout_height
="wrap_content"></TextView>
<EditText android:text="" android:layout_width="fill_parent"
android:layout_height
="wrap_content" android:id="@+id/username"
android:singleLine
="true"></EditText>
<TextView android:text="用户密码" android:layout_width="wrap_content"
android:layout_height
="wrap_content"></TextView>
<EditText android:text="" android:layout_width="fill_parent"
android:layout_height
="wrap_content" android:id="@+id/password"
android:singleLine
="true"></EditText>
<TextView android:text="用户信息" android:layout_width="wrap_content"
android:layout_height
="wrap_content"></TextView>
<EditText android:text="" android:layout_width="fill_parent"
android:layout_height
="wrap_content" android:id="@+id/info"
android:singleLine
="true"></EditText>
<Button android:text="To XML" android:id="@+id/toXml"
android:layout_width
="fill_parent" android:layout_height="wrap_content"></Button>
<Button android:text="Read XML" android:id="@+id/readXml"
android:layout_width
="fill_parent" android:layout_height="wrap_content"></Button>


</LinearLayout>

res/layout/read.xml

View Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width
="fill_parent" android:layout_height="wrap_content"
android:orientation
="vertical">
<LinearLayout android:layout_width="fill_parent"
android:layout_height
="fill_parent">
<TextView android:text="用户id:\n" android:layout_width="wrap_content"
android:layout_height
="wrap_content"></TextView>
<TextView android:text="" android:id="@+id/r_userid"
android:layout_width
="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>

<LinearLayout android:layout_width="fill_parent"
android:layout_height
="fill_parent">
<TextView android:text="用户名:\n" android:id="@+id/textView1"
android:layout_width
="wrap_content" android:layout_height="wrap_content"></TextView>
<TextView android:text="" android:id="@+id/r_username"
android:layout_width
="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>

<LinearLayout android:layout_width="fill_parent"
android:layout_height
="fill_parent">
<TextView android:text="用户密码:\n" android:id="@+id/textView1"
android:layout_width
="wrap_content" android:layout_height="wrap_content"></TextView>
<TextView android:text="" android:id="@+id/r_password"
android:layout_width
="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>

<LinearLayout android:layout_width="fill_parent"
android:layout_height
="fill_parent">
<TextView android:text="用户信息:\n" android:id="@+id/textView1"
android:layout_width
="wrap_content" android:layout_height="wrap_content"></TextView>
<TextView android:text="" android:id="@+id/r_info"
android:layout_width
="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
</LinearLayout>

src/B.Unit/User.java

View Code
package B.Unit;

public class User {
private int userId;
private String userName;
private String password;
private String info;

public int getUserId() {
return userId;
}

public void setUserId(int userId) {
this.userId = userId;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getInfo() {
return info;
}

public void setInfo(String info) {
this.info = info;
}

}

src/B.Unit/SaxDoc.java

package B.Unit;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
* 实现丢xml文件解析,返回一个list对象
*
* */

public class SaxDoc extends DefaultHandler {
private List
<User> list = null;
private User user = null;
private String tagname;

/**
* 开始解析xml文档
* */
@Override
public void startDocument() throws SAXException {
System.out.println("startDocument");
list = new ArrayList
<User>();
super.startDocument();
}

StringBuffer sb = new StringBuffer();
/**
* 开始处理节点,获得节点的属性
* */
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
sb.delete(0, sb.length());
if (localName.equals("user")) {
user = new User();
user.setUserId(Integer.parseInt(attributes.getValue("id")));
}
this.tagname = localName;
super.startElement(uri, localName, qName, attributes);
}

/**
* 获取节点内容
* */
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {

if (this.tagname != "") {
if (this.tagname.equals("name")) {
sb.append(ch, start, length);
user.setUserName(sb.toString());
} else if (this.tagname.equals("pwd")) {
sb.append(ch, start, length);
user.setPassword(sb.toString());
} else if (this.tagname.equals("info")) {
sb.append(ch, start, length);
user.setInfo(sb.toString());
}
}
super.characters(ch, start, length);
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// 一个元素结束后往list里加入一个user对象
if (localName.equals("user")) {
list.add(user);
}
super.endElement(uri, localName, qName);
}

@Override
public void endDocument() throws SAXException {
super.endDocument();
}

// 返回user list对象
public List
<User> getUserList() {
return list;
}
}

src/B.Unit/SaxWriteXml.java

package B.Unit;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.util.List;

import org.xmlpull.v1.XmlSerializer;

import android.os.Environment;
import android.util.Xml;

public class SaxWriteXml {

public String writeUserInfoToString(List
<User> users) {

// 实现xml信息序列化的一个对象
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try {
// xml数据经过序列化后保存到String中,然后将字符串通过OutputStream保存为xml文件
serializer.setOutput(writer);
// 文档开始
serializer.startDocument("utf-8", true);
// 开始一个节点
serializer.startTag("", "users");
// 开始一个子节点
for (User user : users) {
serializer.startTag("", "user");
serializer
.attribute("", "id", String.valueOf(user.getUserId()));

serializer.startTag("", "name");
serializer.text(user.getUserName());
serializer.endTag("", "name");

serializer.startTag("", "pwd");
serializer.text(user.getPassword());
serializer.endTag("", "pwd");

serializer.startTag("", "info");
serializer.text(String.valueOf(user.getInfo()));
serializer.endTag("", "info");

serializer.endTag("", "user");
}
serializer.endTag("", "users");

// 关闭文档
serializer.endDocument();

} catch (Exception e) {
e.printStackTrace();
}

return writer.toString();
}

public boolean writeToXml( String str,String filePat) {
System.out.println("run==>writeToXml");
OutputStream out = null;
try {
String dirPath = Environment.getExternalStorageDirectory()
.toString() + "/xml";
File dir = new File(dirPath);
if (!dir.exists())
dir.mkdir();
File f = new File(dirPath +"/"+ filePat);
System.out.println(dirPath +"/"+ filePat);
out = new FileOutputStream(f);

} catch (Exception e) {
System.out.println("Error"+e.getMessage());
return false;
}
OutputStreamWriter outw = new OutputStreamWriter(out);
try {
outw.write(str);
outw.close();
out.close();
} catch (Exception e) {
return false;
}
return true;
}
}

src/B.Unit/Activity014.java

package B.P1;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

import B.Unit.SaxDoc;
import B.Unit.SaxWriteXml;
import B.Unit.User;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Activity014 extends Activity {

private EditText userid, username, password, info;
private Button toXml, readXml;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main014);

userid
= (EditText) findViewById(R.id.userid);
username
= (EditText) findViewById(R.id.username);
password
= (EditText) findViewById(R.id.password);
info
= (EditText) findViewById(R.id.info);

toXml
= (Button) findViewById(R.id.toXml);
toXml.setOnClickListener(toXmlClick);

readXml
= (Button) findViewById(R.id.readXml);
readXml.setOnClickListener(readXmlClick);

}

OnClickListener toXmlClick
= new OnClickListener() {

@Override
public void onClick(View v) {
System.out.println(
"toXmlButton onclick");
// 用户Id必须填入一个数字否则会出现转换数字异常
String id = userid.getText().toString();
String user
= username.getText().toString();
String pwd
= password.getText().toString();
String _info
= info.getText().toString();

User u
= new User();

u.setUserId(
new Integer(id));
u.setUserName(user);
u.setPassword(pwd);
u.setInfo(_info);
// 如果有多个User对象,可以继续添加
List<User> list = new ArrayList<User>();
list.add(u);

SaxWriteXml sax
= new SaxWriteXml();
String strXml
= sax.writeUserInfoToString(list);
System.out.println(strXml);
sax.writeToXml(strXml,
"user.xml");

Toast.makeText(getApplicationContext(),
"write to xml file successful ", Toast.LENGTH_SHORT).show();
}
};

OnClickListener readXmlClick
= new OnClickListener() {

@Override
public void onClick(View v) {
System.out.println(
"readXmlButton onclick");

SaxDoc sax
= new SaxDoc();

SAXParser sp
= null;
try {
sp
= SAXParserFactory.newInstance().newSAXParser();
}
catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
catch (FactoryConfigurationError e) {
// TODO Auto-generated catch block

e.printStackTrace();

}
// 解析user.xml文件
File f = new File(Environment.getExternalStorageDirectory()
.toString()
+ "/xml/user.xml");
System.out.println(Environment.getExternalStorageDirectory()
.toString()
+ "/xml/user.xml");

if (!f.exists()) {
Toast.makeText(getApplicationContext(),
"not exist user.xml ",
Toast.LENGTH_SHORT).show();
return;
}
try {
sp.parse(f, sax);
System.out.println(
"sp.parse(f, sax);");
}
catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 解析user.xml后,获取返回list的user数据
List<User> list = sax.getUserList();
// 目前只有一个User对象
User user = list.get(0);
int r_userid = user.getUserId();
String r_username
= user.getUserName();
String r_password
= user.getPassword();
String r_info
= user.getInfo();

System.out.println(
"r_userid" + r_userid);
System.out.println(
"r_username" + r_username);
System.out.println(
"r_password" + r_password);
System.out.println(
"r_info" + r_info);

Intent intent
= new Intent(Activity014.this, Activity014Read.class);
Bundle map
= new Bundle();
map.putSerializable(
"r_userid", r_userid);
map.putSerializable(
"r_username", r_username);
map.putSerializable(
"r_password", r_password);
map.putSerializable(
"r_info", r_info);
intent.putExtra(
"user", map);
startActivity(intent);

}
};

}

src/B.Unit/Activity014Read.java

View Code
package B.P1;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Activity014Read extends Activity {

private TextView userid, username, password, info;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.read);

int _userid = this.getIntent().getBundleExtra("user")
.getInt(
"r_userid");

String _username
= this.getIntent().getBundleExtra("user")
.getString(
"r_username");

String _password
= this.getIntent().getBundleExtra("user")
.getString(
"r_password");

String _info
= this.getIntent().getBundleExtra("user")
.getString(
"r_info");

userid
= (TextView) findViewById(R.id.r_userid);
username
= (TextView) findViewById(R.id.r_username);
password
= (TextView) findViewById(R.id.r_password);
info
= (TextView) findViewById(R.id.r_info);

System.out.println(
"_userid" + _userid);
System.out.println(
"_username" + _username);
System.out.println(
"_password" + _password);
System.out.println(
"_info" + _info);

userid.setText(String.valueOf(_userid));
username.setText(_username);
password.setText(_password);
info.setText(_info);
}
}

更多相关文章

  1. Android解析json数组对象
  2. Android2.2 API 中文文档系列(3) —— AccessibilityService
  3. android - 为安全而设计 - 1 - 开发文档翻译
  4. Android中的Parcel机制 实现Bundle传递对象

随机推荐

  1. Android成功刷到beagle board ^_^
  2. 【Cocos2d-x】Cocos2d-x跨Android平台搭
  3. Android AsyncTask完全解析
  4. android TextView XML的一些属性
  5. 五大媒体播放器的Android
  6. GridView或ListView 中android:drawSelec
  7. Boingo为Android提供Wifi网络
  8. Android NDK 面试题汇总
  9. Android 注解基本使用
  10. 一篇看懂Android与Flutter之间的通信