android java xml文件_Android(java)学习笔记128:xml文件生成

packagecom.itheima.studentinfo;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.InputStream;importorg.xmlpull.v1.XmlPullParser;importorg.xmlpull.v1.XmlSerializer;importandroid.app.Activity;importandroid.os.Bundle;importandroid.text.TextUtils;importandroid.util.Xml;importandroid.view.View;importandroid.view.Window;importandroid.widget.EditText;importandroid.widget.LinearLayout;importandroid.widget.RadioGroup;importandroid.widget.TextView;importandroid.widget.Toast;public class MainActivity extendsActivity {privateEditText et_name;privateEditText et_num;privateRadioGroup rg_sex;//显示结果的页面

privateLinearLayout ll_result;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//界面无标题

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

et_name=(EditText) findViewById(R.id.et_name);

et_num=(EditText) findViewById(R.id.et_num);

rg_sex=(RadioGroup) findViewById(R.id.rg_sex);

ll_result=(LinearLayout) findViewById(R.id.ll_result);

refreshData();

}//刷新数据

private voidrefreshData() {//清除旧的全部的数据

ll_result.removeAllViews();//解析已经存在的xml文件,把里面的数据全部都获取出来,添加上到界面上

File files =getFilesDir();for(File file :files.listFiles()){//每个文件都是一个xml//解析xml

readXmlInfo(file);

}

}/*** 点击保存学生的信息,生成一个xml文件

*@paramview*/

public voidsave(View view){

String name=et_name.getText().toString().trim();

String num=et_num.getText().toString().trim();if(TextUtils.isEmpty(num)||TextUtils.isEmpty(name)){

Toast.makeText(this, "学生姓名或者学号不能为空", 0).show();return;

}try{

File file= new File(getFilesDir(),num+".xml");

FileOutputStream os= newFileOutputStream(file);//采用谷歌api 生成xml文件//1.获取一个xml文件的生成器,序列化器

XmlSerializer serializer =Xml.newSerializer();//2.初始化序列化器 设置写到哪个文件,采用什么样的编码方式

serializer.setOutput(os, "utf-8");//3.开始写数据 ,写xml文件头,文档为独立的xml文件

serializer.startDocument("utf-8", true);

serializer.startTag(null, "student");

serializer.startTag(null, "name");

serializer.text(name);

serializer.endTag(null, "name");

serializer.startTag(null, "num");

serializer.text(num);

serializer.endTag(null, "num");

serializer.startTag(null, "sex");if(rg_sex.getCheckedRadioButtonId()==R.id.rb_male){

serializer.text("male");

}else{

serializer.text("female");

}

serializer.endTag(null, "sex");

serializer.endTag(null, "student");

serializer.endDocument();

os.close();

Toast.makeText(this, "保存数据成功", 0).show();

refreshData();

}catch(Exception e) {

e.printStackTrace();

Toast.makeText(this, "保存数据失败", 0).show();

}

}private voidreadXmlInfo(File file){try{//1.初始化解析器

XmlPullParser parser =Xml.newPullParser();//2.设置解析器的参数

InputStream inputStream = newFileInputStream(file);

parser.setInput(inputStream,"utf-8");int type =parser.getEventType();

StringBuilder sb= newStringBuilder();while(type!=XmlPullParser.END_DOCUMENT){switch(type) {caseXmlPullParser.START_TAG:if("name".equals(parser.getName())){//这是name节点

String name =parser.nextText();

sb.append("--name:"+name);

}else if("num".equals(parser.getName())){//这是name节点

String num =parser.nextText();

sb.append("--num:"+num);

}else if("sex".equals(parser.getName())){//这是name节点

String sex =parser.nextText();

sb.append("--sex:"+sex);

}break;

}

type= parser.next();//让解析器解析下一个元素

}

inputStream.close();

String text=sb.toString();

TextView tv= new TextView(this);

tv.setText(text);

ll_result.addView(tv);

}catch(Exception e) {

e.printStackTrace();

TextView tv= new TextView(this);

tv.setText("这条数据无效");

ll_result.addView(tv);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值