Android XML 파일 해석 pull 해상도 기

5539 단어
Android 에서 XML 해석 은 텍스트 정 보 를 저장 하 는 매우 중요 한 방식 이다.
XML 해석 에는 세 가지 방법 이 있 습 니 다.
SAX 해상도
DOM 해상도
pull 해상도
여기 서 저 는 주로 PULL 해상도 기 해석 XML 을 쓰 고 있 습 니 다. Android 에 pull 해상도 기 를 통합 시 켰 기 때문에 측면 에서 pull 해상도 기 를 사용 하 는 것 을 추천 합 니 다.
분석 파일 을 assets 디 렉 터 리 에 저장 하여 XML 내용 을 분석 합 니 다.


    
        liming
        30
    
    
        zahngxiaoxiao
        25
    


분석 클래스 PersonService 클래스 코드:
package com.example.administrator.foundationdemo.xmlparsepull.service;

import android.util.Xml;

import com.example.administrator.foundationdemo.xmlparsepull.domain.Person;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/12/2.
 */
public class PersonService {

    public static List getPersonXML (InputStream xml) throws Exception{
        List persons = null;
        Person person = null;
        //   pull           ==》 XmlPullParserFactory.newInstance().newPullParser();
        XmlPullParser pullParser = Xml.newPullParser();// Xml      pull     
        pullParser.setInput(xml,"UTF-8");// pull         XML  
        /**  :
         * pull            char[] = {-<..xml..>-} 
         * pull           (    “”)  ,
         *         XML          ,             
         */
        int exent = pullParser.getEventType();//           
        while (exent != XmlPullParser.END_DOCUMENT){
            switch (exent){
                case XmlPullParser.START_DOCUMENT://DOCUMENT(    )
                    persons = new ArrayList();
                    break;
                case XmlPullParser.START_TAG: //     TAG
                    if ("person".equals(pullParser.getName())){
                        int id = Integer.parseInt(pullParser.getAttributeValue(0));
                        person = new Person();
                        person.setId(id);
                    }
                    if ("name".equals(pullParser.getName())){
                       String name = pullParser.nextText();
                        person.setName(name);
                    }
                    if ("age".equals(pullParser.getName())){
                        int age = Integer.parseInt(pullParser.nextText());
                        person.setAge(age);
                    }
                    break;
                case XmlPullParser.END_TAG: //     TAG
                    if ("person".equals(pullParser.getName())){
                        persons.add(person);
                        person = null;
                    }
                    break;

            }
            //          ,PLL           ,
            //       (.next())API,          
            exent = pullParser.next();
        }


        return persons;
    }
}


클래스 를 분석 하여 하위 클래스 를 생 성 하 는 person 클래스 코드:
package com.example.administrator.foundationdemo.xmlparsepull.domain;

/**
 * Created by Administrator on 2016/12/2.
 */
public class Person {

    private int id;
    private String name ;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


Activity 코드:
package com.example.administrator.foundationdemo.xmlparsepull;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import com.example.administrator.foundationdemo.R;
import com.example.administrator.foundationdemo.xmlparsepull.domain.Person;
import com.example.administrator.foundationdemo.xmlparsepull.service.PersonService;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

public class XMLParsePullActivity extends AppCompatActivity {

    TextView xml_parse_text ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
        xmlParse();
    }

    private void init(){
        setContentView(R.layout.activity_xmlparse_pall);
        xml_parse_text = (TextView) findViewById(R.id.xml_parse_text);
    }

    private void xmlParse(){

        try {
            InputStream xml = this.getResources().getAssets().open("person.xml");//   assets XM     
           List persons = PersonService.getPersonXML(xml);
            for (Person person : persons ){
                String text = xml_parse_text.getText()+" 
id:"+person.getId()+"
name:"+person.getName()+"
age:"+person.getAge(); Log.d("FLY",text); xml_parse_text.setText(text); } } catch (Exception e) { Log.d("FLY"," "+e); e.printStackTrace(); } } }

당신들 에 게 도움 이 되 기 를 바 랍 니 다. 감사합니다!!

좋은 웹페이지 즐겨찾기