Android中序列化

1.创建一个HolidayInfo.java的类

package wei.cao.test;

public class HolidayInfo {
	public int ID;
	public String Title;
	public String Holidayer;
	public String HolidayType;
	public String Memo;
	

	public HolidayInfo(int id,String title,String holidayer,String holidayType,String memo)
	{
	 this.ID=id;
	 this.Title=title;
	 this.Holidayer=holidayer;
	 this.HolidayType=holidayType;
	 this.Memo=memo;
	}
}

2.序列化并输出xml(对象的属性中有中文,序列化时出现空字符???)

package wei.cao.test;

import java.io.StringWriter;
import java.util.ArrayList;

import org.xmlpull.v1.XmlPullParserFactory;
import org.xmlpull.v1.XmlSerializer;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class XmlSerializeActivity extends Activity {
    /** Called when the activity is first created. */
	Button myButton;
	EditText result;
	 ArrayList<HolidayInfo> holidays=new ArrayList<HolidayInfo>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
         myButton=(Button)this.findViewById(R.id.myButton);
         result=(EditText)this.findViewById(R.id.et_Result);
        
       
        holidays.add(new HolidayInfo(1,"aa","bb","1","Demo1"));
        holidays.add(new HolidayInfo(2,"aaaa","bbbb","2","Demo2"));
        holidays.add(new HolidayInfo(3,"aaaaaa","bbbbbb","3","Demo3"));
        
        myButton.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
			
				String str=SerializeToXml(holidays);
				result.setText(str);
				
			}
			  private String SerializeToXml(ArrayList<HolidayInfo> holidays)
			    {
			    	StringWriter stringWriter=new StringWriter();
			    	try{
			            //获取XmlSerializer 对象
			 	    	XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
			 	    	XmlSerializer xmlSerializer=factory.newSerializer();
			 	    	
			 	    	//设置输出流对象
			 	    	xmlSerializer.setOutput(stringWriter);
			 	    	
          /* 
             * startDocument(String encoding, Boolean standalone)encoding代表编码方式 
             * standalone  用来表示该文件是否呼叫其它外部的文件。 
             * 若值是 ”yes” 表示没有呼叫外部规则文件,若值是 ”no” 则表示有呼叫外部规则文件。默认值是 “yes”。 
           */			 	xmlSerializer.startDocument("utf-8", true);
			 	    	for(HolidayInfo holiday:holidays){
         /* 
          *startTag (String namespace, String name)这里的namespace用于唯一标识xml标签 
          *XML 命名空间属性被放置于某个元素的开始标签之中,并使用以下的语法: 
                xmlns:namespace-prefix="namespaceURI" 
                         当一个命名空间被定义在某个元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。 
              注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向某个实存的网页,这个网页包含着有关命名空间的信息。 
          */  
					  xmlSerializer.startTag(null, "Holiday");
					     xmlSerializer.startTag(null, "ID");
				             xmlSerializer.text(holiday.ID+""); 
				             xmlSerializer.endTag(null, "ID");
				             
				             xmlSerializer.startTag(null, "Title");
				             xmlSerializer.text(holiday.Title); 
				             xmlSerializer.endTag(null, "Title");
				             
				             xmlSerializer.startTag(null, "Holidayer");
				             xmlSerializer.text(holiday.Holidayer); 
				             xmlSerializer.endTag(null, "Holidayer");
				             
				             xmlSerializer.startTag(null, "HolidayType");
				             xmlSerializer.text(holiday.HolidayType); 
				             xmlSerializer.endTag(null, "HolidayType");
		
				             xmlSerializer.startTag(null, "Memo");
				             xmlSerializer.text(holiday.Memo); 
				             xmlSerializer.endTag(null, "Memo");
				             
					   xmlSerializer.endTag(null, "Holiday");  
			 	    	}
			            xmlSerializer.endDocument();  
			    	}
			    	catch(Exception e)
			    	{
			    	  e.printStackTrace();
			    	}
			       return stringWriter.toString();	
			    }
			    	

		});
      

    }
   
    
}

3.执行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值