XmlSerializer序列化器
注:谷歌推荐的用于专门生成xml文件的API(自动对非法字符进行转义)。
try {
File file = new File(getFilesDir(), studentname+".xml");
OutputStream out = new FileOutputStream(file);
//专门生成xml文件的序列化器
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out, "UTF-8");
//<?xml version="1.0" encoding="utf-8" standalone?>
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "student");
//设置 文本信息--学生的姓名
serializer.startTag(null, "name");
serializer.text(studentname);
serializer.endTag(null, "name");
serializer.startTag(null, "number");
serializer.text(studentnumber);
serializer.endTag(null, "number");
serializer.startTag(null, "sex");
serializer.text(sex);
serializer.endTag(null, "sex");
serializer.endTag(null, "student");
serializer.endDocument();
out.close();
Toast.makeText(this, "保存"+studentname+"信息 成功 ...", 0).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "保存"+studentname+"信息 失败 .... ...", 0).show();
}
XmlPull解析器
Android中默认的xml解析器
//使用XmlPull解析器 去 解析 xml文件的内容
/*
<?xml version="1.0" encoding="gbk"?>
<smartresult>
<product type="mobile">
<phonenum>13512345678</phonenum>
<location>重庆移动神州行卡</location>
<phoneJx>有得有失,华而不实,须防劫财,始保平安 吉带凶</phoneJx>
</product>
</smartresult>
*/
XmlPullParser pullParser = Xml.newPullParser();
try {
InputStream in = getAssets().open("result.xml");
//解析的源是什么 ??? --- result.xml
pullParser.setInput(in, "gbk");
//获得 一个 事件的 类型
int eventType = pullParser.getEventType();
Product p=null;
//买没有到Xml文档的结尾处
while(eventType!=XmlPullParser.END_DOCUMENT){
//判断是否是元素的开始 , 只要是某个元素的开始位置, 那么就会进入这里
if(eventType==XmlPullParser.START_TAG){
//获得 当前解析到的元素的名称
if("product".equals(pullParser.getName())){
p = new Product();
// sax 解析
//准备 product 类的一个实例 , 去 封装数据
String type = pullParser.getAttributeValue(0);
p.setType(type);
}else if("phonenum".equals(pullParser.getName())){
//<phonenum>13512345678</phonenum>
String phonenum = pullParser.nextText();
p.setPhonenum(phonenum);
}else if("location".equals(pullParser.getName())){
//<location>重庆移动神州行卡</location>
String location = pullParser.nextText();
p.setLocation(location);
}else if("phoneJx".equals(pullParser.getName())){
//<phoneJx>有得有失,华而不实,须防劫财,始保平安 吉带凶</phoneJx>
String phoneJx = pullParser.nextText();
pullParser.getText();
p.setPhoneJx(phoneJx);
}
}
//手动 挪动 "指针 "
eventType = pullParser.next();
}
if(p!=null){
System.out.println(p.toString());
}
} catch (Exception e) {
e.printStackTrace();
}