Android复习练习七(Android中Xml序列化及Pull解析)

来源:互联网 发布:打码平台源码 编辑:程序博客网 时间:2024/06/06 02:30

需求:在先前QQ登陆界面的基础上,增加一个注册Activity以及一个登陆成功界面的Activity,同时增加注册机制和登陆检验机制,使用xml文件来保存用户名和密码,分别联系安卓下的Xml文件序列化及Pull解析xml文件


登陆界面:



登陆成功界面:



注册界面:



xml序列化代码:

public static boolean writeToXml(User user, Context context, String filename) {// 从xml文件读出来userlistuserlist = readFromXml(filename, context);try {if (userlist.contains(user)) {return false;}userlist.add(user);// 1.获得序列化对象XmlSerializer serializer = Xml.newSerializer();// 1.获取要存储的文件,这里要写全.xml文件名File file = new File(context.getFilesDir(), filename);// 指定序列化对象的输出位置以及编码serializer.setOutput(new FileOutputStream(file), ENCODING);//开始写xml文件到本地serializer.startDocument(ENCODING, true);serializer.startTag(null, "users");// <users>for (User u : userlist) {serializer.startTag(null, "user");// <user>serializer.startTag(null, "account");serializer.text(u.getAccount());serializer.endTag(null, "account");serializer.startTag(null, "password");serializer.text(u.getPassword());serializer.endTag(null, "password");serializer.endTag(null, "user");// </user>}serializer.endTag(null, "users");// </users>serializer.endDocument();return true;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return false;}



xml文件pull解析代码:

public static ArrayList<User> readFromXml(String filename, Context context) {try {userlist = null;XmlPullParser pullParser = Xml.newPullParser();InputStream is = new FileInputStream(new File(context.getFilesDir(), filename));pullParser.setInput(is, ENCODING);int eventType = pullParser.getEventType();while (eventType != XmlPullParser.END_DOCUMENT) {String tagName = pullParser.getName();switch (eventType) {case XmlPullParser.START_TAG:// 节点起始if (tagName.equals("users")) {userlist = new ArrayList<>();} else if (tagName.equals("user")) {user = new User();} else if (tagName.equals("account")) {user.setAccount(pullParser.nextText());} else if (tagName.equals("password")) {user.setPassword(pullParser.nextText());}break;case XmlPullParser.END_TAG:if (tagName.equals("user")) {userlist.add(user);}break;default:break;}// 继续查找下一个节点的类型eventType = pullParser.next();}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return userlist;}


0 0
原创粉丝点击