XmlSerializer序列化器和XmlPull解析器

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();
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值