android XML 해석 상세 (봉 인 된 도구 클래스)

6519 단어 android
흔히 볼 수 있 는 XML 해석 은 몇 가지 가 있 습 니까?
DOM 해석;
PULL 해석;(android 자체 해석 XML 기술)
JDOM 해석;
SAX 해석;
DOM4J
PULL 분석 예제 코드:
<1>
저희 가 분석 할 XML 파일 은 로 컬 애플 리 케 이 션 의 폴 더 아래 나 네트워크 에 있 습 니 다.
주의: 그러면 이 두 가지 상황 은 모두 기능 목록 파일 에 권한 을 등록 해 야 합 니 다.
<2>
XmlPullParser: XML 당 김 분석 기
android 의 pull 해석 은 다음 과 같은 과정 이 있 습 니 다.
XmlPullParser. getEventType: 현재 해상도 가 어느 노드 에 있 는 지 가 져 옵 니 다.
XmlPullParser. getName: 주로 START 에 있 는TAG 또는 ENDTAG 이벤트 의 xml 태그 이름 입 니 다.
XmlPullParser. getText: 텍스트 내용 을 가 져 오 는 데 사 용 됩 니 다.
XmlPullParser. next (): 해석 기 를 다음 이벤트 로 이동 하면 모든 xml 파일 을 다 옮 길 수 있 습 니 다.
(인터넷 에서 가 져 오기) 인 스 턴 스 코드:
package com.example.tf.androidpull.com.example.utils;

import android.util.Xml;

import com.example.tf.androidpull.com.example.domin.Person;

import org.xmlpull.v1.XmlPullParser;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by TF on 2018/6/4.
 */
public class NetUtils {
    //             
    public static InputStream getInputStreamByPath(String path) throws Exception {
        URL url = new URL(path);
        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
        httpURLConnection.setConnectTimeout(3000);
        int responseCode = httpURLConnection.getResponseCode();
        if (responseCode == httpURLConnection.HTTP_OK) {
            return httpURLConnection.getInputStream();
        }
        return null;
    }
    //           
    public static byte[] getByteArrayByInputStream(InputStream inputStream) throws IOException {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = inputStream.read(buffer)) != -1) {
            byteArrayOutputStream.write(buffer, 0, len);
        }
        return byteArrayOutputStream.toByteArray();
    }
    //          
    public static String getStringInputStream(InputStream inputStream) throws IOException {
        return new String(getByteArrayByInputStream(inputStream));
    }

    //  xml
    //START_DOCUMENT:  xml    。END_DOCUMENT:  xml    


    public static List getPersonsByXmlString(String xml) throws Exception {
        List persons = new ArrayList<>();
        //  Pull     
        XmlPullParser xmlPullParser = Xml.newPullParser();
        //       Xml  
        xmlPullParser.setInput(new StringReader(xml));
        //      
        int eventType = xmlPullParser.getEventType();
        while(eventType!=XmlPullParser.END_DOCUMENT){
            switch (eventType){
                case XmlPullParser.START_DOCUMENT:
                    System.out.println();
                    break;
                case XmlPullParser.START_TAG://    
                    String startTag = xmlPullParser.getName();
                    System.out.println();
                    break;
                case XmlPullParser.TEXT://    
                    String text = xmlPullParser.getText();
                    System.out.println();
                    break;
                case XmlPullParser.END_TAG://    
                    String endTag = xmlPullParser.getName();
                    System.out.println();
                    break;
            }
                eventType = xmlPullParser.next();
             }
        return  persons;
    }
}

(로 컬 에서 가 져 오기) 인 스 턴 스 코드:
package com.hsj.example.pullparsedemo09;

import android.content.res.AssetManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Xml;

import org.xmlpull.v1.XmlPullParser;

import java.io.InputStream;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //         
        AssetManager assetManager=getAssets();
        try {
            //          open()            ,       
            InputStream inputStream=assetManager.open("persons.xml");

            //1.  Xml     
           XmlPullParser parser= Xml.newPullParser();

            //2.         xml     ,   InputStream      
            parser.setInput(inputStream,"utf-8");

            //3.      
            int eventType=parser.getEventType();

            //XmlPullParser.START_DOCUMENT=0
            System.out.println("eventType="+eventType);

            //           xml        
            // XmlPullParser.END_DOCUMENT=1
            while (eventType!=XmlPullParser.END_DOCUMENT){
                switch (eventType){
                    //XmlPullParser.START_TAG=2:         
                    case XmlPullParser.START_TAG:
                        //             
                        String starTag=parser.getName();
                        if("person".equals(starTag)){

                           String id= parser.getAttributeValue(0);
                            String isbn=parser.getAttributeName(1);

                            System.out.println("id="+id+",isbn="+isbn);
                        }else if("name".equals(starTag)){
                            //                 
                            String name=parser.nextText();
                            System.out.println("name="+name);
                        }
                        System.out.println("startTag="+starTag);
                        break;

                    //XmlPullParser.TEXT=4:         
                    /*case XmlPullParser.TEXT:

                        //      
                       String text= parser.getText();
                        System.out.println("text="+text);
                        break;*/

                    case XmlPullParser.END_TAG:
                        //        
                        String endTag=parser.getName();
                        System.out.println("endTag="+endTag);
                        break;
                }

                //          
                eventType=parser.next();

            }


        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

좋은 웹페이지 즐겨찾기