安卓中生成xml文件的方法
xml文件实际上就是map集合的键值对的展现形式,有他自己特有的格式
注:生成的xml文件的查看方式DDMS→data→data→包名→files→文件名
第一种:(StringBuffer)
第一步:在xml布局中编辑
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<EditText
android:id="@+id/et_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入学生的姓名" />
<EditText
android:id="@+id/et_age"
android:inputType="number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入学生的年龄" />
<EditText
android:id="@+id/et_id"
android:inputType="number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入学生的学号" />
<Button
android:onClick="save"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="保存" />
</LinearLayout>
第二步:在java中编辑逻辑
public class MainActivity extends Activity {
private EditText et_name;
private EditText et_age;
private EditText et_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_name = (EditText) findViewById(R.id.et_name);
et_age = (EditText) findViewById(R.id.et_age);
et_id = (EditText) findViewById(R.id.et_id);
}
//<头>
//<info>
//<student id='800001'>
//<name>张三</name>
//<age>18</age>
//</student>
//</info>
//保存学生的信息
public void save(View view){
String name = et_name.getText().toString().trim();
String age = et_age.getText().toString().trim();
String id = et_id.getText().toString().trim();
if(TextUtils.isEmpty(name)||TextUtils.isEmpty(age)||TextUtils.isEmpty(id)){
Toast.makeText(this, "信息不能为空", 0).show();
return;
}else{
//打算把数据存成xml文件.跨平台.
try {
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>");
sb.append("<info>");
sb.append("<student id='"+id+"'>");
sb.append("<name>"+name+"</name>");
sb.append("<age>"+age+"</age>");
sb.append("</student>");
sb.append("</info>");
File file = new File(Environment.getExternalStorageDirectory(),"qzs.xml");
FileOutputStream fos = new FileOutputStream(file);
fos.write(sb.toString().getBytes());
fos.close();
Toast.makeText(this, "保存学生信息成功", 0).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "保存学生信息失败", 0).show();
}
}
}
}
第二种方法:(序列化器)
public class MainActivity extends Activity {
private EditText et_name;
private EditText et_age;
private EditText et_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_name = (EditText) findViewById(R.id.et_name);
et_age = (EditText) findViewById(R.id.et_age);
et_id = (EditText) findViewById(R.id.et_id);
}
//<头>
//<info>
//<student id='800001'>
//<name>张三</name>
//<age>18</age>
//</student>
//</info>
//保存学生的信息
public void save(View view){
String name = et_name.getText().toString().trim();
String age = et_age.getText().toString().trim();
String id = et_id.getText().toString().trim();
if(TextUtils.isEmpty(name)||TextUtils.isEmpty(age)||TextUtils.isEmpty(id)){
Toast.makeText(this, "信息不能为空", 0).show();
return;
}else{
//打算把数据存成xml文件.跨平台.
try {
//1.创建一个xml文件的序列化器
XmlSerializer serializer = Xml.newSerializer();
//2.设置文件的输出和编码方式
FileOutputStream os = new FileOutputStream(new File(Environment.getExternalStorageDirectory(),"sem.xml"));
//对于目标文件的一个输出流
serializer.setOutput(os, "utf-8");
//3.写xml文件的头
serializer.startDocument("utf-8", true);
//4.写info开始节点
serializer.startTag(null, "info");
//5.写student开始节点
serializer.startTag(null, "student");
//6.写属性
serializer.attribute(null, "id", id);
//7.写name
serializer.startTag(null, "name");
serializer.text(name);
serializer.endTag(null, "name");
//8.写age
serializer.startTag(null, "age");
serializer.text(age);
//两个节点中间的内容
serializer.endTag(null, "age");
serializer.endTag(null, "student");
serializer.endTag(null, "info");
serializer.endDocument();//写文件的末尾
os.close();
Toast.makeText(this, "保存学生信息成功", 0).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "保存学生信息失败", 0).show();
}
}
}
}