zoukankan      html  css  js  c++  java
  • pullxml操作xml

    package com.kk.android.test;
    
    import java.io.File;
    import java.io.FileWriter;
    import java.io.InputStream;
    import java.io.Writer;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.xmlpull.v1.XmlPullParser;
    import org.xmlpull.v1.XmlSerializer;
    
    import android.test.AndroidTestCase;
    import android.util.Log;
    import android.util.Xml;
    
    /**
     * 使用xmlpull库操作xml
     * @author MyPC
     *
     */
    public class PullParserPersonTest extends AndroidTestCase {
        private static final String TAG="PullParserPersonTest";
        
        /**
         * 解析xml
         * @throws Exception
         */
        public void testRead() throws Exception {
            InputStream personFile=getClass().getClassLoader().getResourceAsStream("person.xml");
            List<Person> personList = null;
            Person person=null;
            XmlPullParser parser=Xml.newPullParser();
            parser.setInput(personFile, "utf-8");
            int eventType=parser.getEventType(); //产生第一个事件
            
            while(eventType!=XmlPullParser.END_DOCUMENT){
                switch (eventType){
                
                case XmlPullParser.START_DOCUMENT:
                    personList=new ArrayList<Person>();
                    break;
                case XmlPullParser.START_TAG:
                    String tagName=parser.getName();//获取解析器当前指向的元素的名称
                    if("person".equals(tagName)){
                        person=new Person();
                        person.setId(Integer.valueOf(parser.getAttributeValue(0)));
                    }
                    if(person!=null){
                        if(tagName.equals("name")){
                            person.setName(parser.nextText());
                        }
                        if(tagName.equals("age")){
                            person.setAge(Integer.valueOf(parser.nextText()));
                        }
                    }
                    break;
                case XmlPullParser.END_TAG:
                    if("person".equals(parser.getName())){
                        personList.add(person);
                        person=null;
                    }
                    break;
                }
                eventType=parser.next();
            }
            
            for(Person p:personList){
                Log.i(TAG, p.toString());
            }
            
        }
        
        /**
         * 生成xml
         * @throws Exception
         */
        public void write()throws Exception{
            File file=new File(getContext().getFilesDir(),"message.xml");
            if(!file.exists())file.createNewFile();
            Writer writer=new FileWriter(file);
            XmlSerializer serializer=Xml.newSerializer();
            serializer.setOutput(writer);
            serializer.startDocument(null, true);
            serializer.startTag(null, "message");
            for(int i=0;i<100;i++){
                
                serializer.startTag(null,"name");
                serializer.attribute(null, "id", i+"");
                serializer.text("name"+i);
                serializer.endTag(null,"name");
                
                serializer.startTag(null, "age");
                serializer.text(i+"");
                serializer.endTag(null, "age");
            }
            serializer.endTag(null, "message");
            serializer.endDocument();
        }
        
        
        
        private class Person {
            private Integer id;
            private Integer age;
            private String name;
    
            public Integer getId() {
                return id;
            }
    
            public void setId(Integer id) {
                this.id = id;
            }
    
            public Integer getAge() {
                return age;
            }
    
            public void setAge(Integer age) {
                this.age = age;
            }
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            @Override
            public String toString() {
                return "id:"+id+" name:"+name+" age:"+age;
            }
            
            
        }    
    
    }
  • 相关阅读:
    嘉年华专访 | 我有故事,你有酒吗?
    adminset 管理员认证
    adminset 管理员权限
    C/C++ scanf 函数中%s 和%c 的简单差别
    C/C++ scanf 函数中%s 和%c 的简单差别
    Boost Log 基本使用方法
    Boost Log 基本使用方法
    Boost Log 基本使用方法
    Boost Log 基本使用方法
    mybatis if test标签的使用
  • 原文地址:https://www.cnblogs.com/BigIdiot/p/2670660.html
Copyright © 2011-2022 走看看