android使用pull解析器读写xml文件…

来源:互联网 发布:后期视频制作软件 编辑:程序博客网 时间:2024/05/16 08:02
public class CreatexmlActivity extends Activity {
   
Button btn1;
// OnClickListener ocl1;
    @Override
    public voidonCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       btn1=(Button)findViewById(R.id.button1);
       btn1.setOnClickListener(ocl1);

       
    }
    
  public OnClickListener ocl1=newOnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
List<Person> list1=newArrayList<Person>();
Person p1=new Person("shouji",12);
p1.setId(0);
list1.add(p1);
Person p2=new Person("dianhua",22);
p2.setId(new Integer(1));
list1.add(p2);
try {
saveAllByXmlSerializer(list1,new FileOutputStream(newFile("/sdcard/data","b.xml")));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<Person> list2;
try {
list2 = findAll(new FileInputStream(newFile("/sdcard/data","b.xml")));
for(int i=0;i<list2.size();i++)
Toast.makeText(getApplicationContext(),list2.get(i).getName(),Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};

public List<Person>findAll(InputStream in) throws Exception { 
    //获取Pull解析器 
    XmlPullParser parser =Xml.newPullParser(); 
    //解析器加载输入流 
    parser.setInput(in,"UTF-8"); 
 
   List<Person> list = newArrayList<Person>(); 
    Person user =null; 
    for (int event =parser.getEventType(); event != XmlPullParser.END_DOCUMENT; event =parser.next()) 
       switch (event) { 
           caseXmlPullParser.START_TAG: 
              if("person".equals(parser.getName())) { 
                 user = new Person(); 
                 String id =parser.getAttributeValue(0); 
                 user.setId(newInteger(id)); 
                 list.add(user); 
              } else if("name".equals(parser.getName())) { 
                 String name =parser.nextText(); 
                 user.setName(name); 
              } else if("age".equals(parser.getName())) { 
                 String age =parser.nextText(); 
                 user.setAge(newInteger(age)); 
             
      
 
    returnlist; 


public voidsaveAllByXmlSerializer(List<Person>users, OutputStream out) throws IOException{ 
    XmlSerializer serializer= Xml.newSerializer(); 
   serializer.setOutput(out, "UTF-8"); 
 
   serializer.startDocument("UTF-8", true); 
   serializer.startTag(null, "persons"); 
 
    for (Person user :users) { 
       serializer.startTag(null,"person"); 
       serializer.attribute(null, "id",user.getId().toString()); 
 
       serializer.startTag(null,"name"); 
      serializer.text(user.getName()); 
       serializer.endTag(null,"name"); 
 
       serializer.startTag(null,"age"); 
      serializer.text(String.valueOf(user.getAge())); 
       serializer.endTag(null,"age"); 
 
       serializer.endTag(null,"person"); 
   
 
    serializer.endTag(null,"persons"); 
   serializer.endDocument(); 





public class Person {  
    
    private Integer id; 
    private String name; 
    private int age; 
     
    public Person () 
    {} 
    public Person (Stringname ,int age)  
   
       this.name = name;  
       this.age = age;  
   
    public Integer getId() { 
       return id;  
   
    public voidsetId(Integer id) {  
       this.id = id;  
   
    public String getName(){  
       return name;  
   
    public voidsetName(String name) {  
       this.name = name;  
   
    public int getAge() { 
       return age;  
   
    public void setAge(intage) {  
       this.age = age;  
   
    @Override 
    public String toString(){  
       // TODO Auto-generated method stub 
       return this.id+",name "+this.name+"  age "+this.age+"\n";  
   
     
}  

}

创建的xml文件如下:
<?xml version='1.0' encoding='UTF-8'standalone='yes'?><persons><personid="0"><name>shouji</name><age>12</age></person><personid="1"><name>dianhua</name><age>22</age></person></persons>
大家会发现这个xml文件和我们平常使用的xml文件有所差别,请仔细看!
发现没有,<?xml version='1.0'encoding='UTF-8' standalone='yes'?>这个中间的是单引号,而我们平常使用的是双引号<?xmlversion="1.0"encoding="utf-8"?>,这个怎么办呢?下期解决。
0 0
原创粉丝点击