1. 程式人生 > >Android中使用pull解析xml檔案

Android中使用pull解析xml檔案

Android解析xml檔案的時候,自己推薦是使用pull的方式來解析xml資原始檔,pull方式又有兩種,分別是XmlPullParser和XmlResourceParser兩種。下面來分別介紹。

一: XmlPullParser方式進行佈局解析。

首先看一下這個物件的資料讀取方式:

parser.setInput(getResources().getAssets().open("student.xml"),
                    "UTF-8");

這裡是以流的方式讀取檔案的,所以這個方法應該是多用在解析assets裡面存放的資原始檔,看具體完整程式碼,具體的解釋在程式碼都已經註釋:

這裡寫圖片描述

public void parseWithoutResource() {
        // 使用android.util.Xml類裡面的靜態方法Xml.newPullParser()新建一個xmlpullparser物件
        XmlPullParser parser = Xml.newPullParser();
        Student student = null;
        // 給parser物件設定解析物件,它接收的是inputstream物件,所以要把檔案以流的形式傳進來,這裡解析的是事先已經放到assets資料夾裡面的xml檔案。
        try
{ parser.setInput(getResources().getAssets().open("student.xml"), "UTF-8");// 以UTF-8編碼方式進行讀取解析。 int eventType = parser.getEventType(); // 只要xml沒有讀取完畢就繼續迴圈解析 while (eventType != XmlPullParser.END_DOCUMENT) { String tagName = parser.getName(); switch
(eventType) { case XmlPullParser.START_DOCUMENT:// 文件解析開始 students = new ArrayList<Student>(); break; case XmlPullParser.START_TAG:// 解析到標籤處 if (tagName.equals("student")) { student = new Student(); student.setId(parser.getAttributeValue("", "id"));// 第一個引數是屬性前面的名稱空間,後面是屬性名 } if (student != null) { if (tagName.equals("name")) { student.setName(parser.nextText());//當前標籤後面的文字,也就是標籤內容。 } if (tagName.equals("age")) { student.setAge(parser.nextText()); } if (tagName.equals("sex")) { student.setSex(parser.nextText()); } } break; case XmlPullParser.END_TAG: if (tagName.equals("student")) {// 在標籤結束的時候檢查這個節點是不是student節點,如果是的話新增到list,賦值null,繼續下一個student物件解析 students.add(student); student = null; } break; default: break; } eventType = parser.next(); } } catch (Exception e) { e.printStackTrace(); } }

二 : XmlResourceParser.

名字中的resource可以看出來,這個方法主要是解析資原始檔裡面的xml的,看以下構造方法:

這裡寫圖片描述

XmlResourceParser parser = getResources().getLayout(resId);

這個是通過資原始檔的id讀取xml檔案並進行解析,以下看具體程式碼:

public JSONArray parseWithResource(int resId) {
        JSONArray array = new JSONArray();
        JSONObject item = null;
        // 正如函式名稱一樣,xml資源解析,用來解析資原始檔裡面的xml,獲取到專案中資源之後再獲取layout進行解析
        XmlResourceParser parser = getResources().getLayout(resId);
        try {
            // 獲取當前解析到的標籤型別
            int eventType = parser.getEventType();
            while (eventType != XmlResourceParser.END_DOCUMENT) {
                String tagName = parser.getName();
                switch (eventType) {
                case XmlResourceParser.START_TAG:
                    // 這個名字的方法名可以看出來,獲取的是資源的值,也就是對用的值在R檔案裡面對應的整型值。
                    int id = parser.getAttributeResourceValue(NAME_SPACE, "id",
                            -1);
                    item = new JSONObject();
                    if (id != -1) {
                        if (getViewById(id) != null) {
                            item.put("id", id);
                            item.put("tagName", tagName);
                            // 不帶resource的getAttributeValue直接獲取屬性值,第一個引數是名稱空間,第二個是屬性名,返回屬性值。
                            String width = parser.getAttributeValue(NAME_SPACE,
                                    "layout_width");
                            String height = parser.getAttributeValue(
                                    NAME_SPACE, "layout_height");
                            String text = parser.getAttributeValue(NAME_SPACE,
                                    "text");
                            item.put("width", width);
                            item.put("height", height);
                            item.put("text", text);
                            array.put(item);
                        }
                    }
                    break;

                default:
                    break;
                }

                eventType = parser.next();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return array;
    }

相關推薦

Androidpull解析xml檔案+將資料儲存為xml格式,並儲存在記憶體裡

在解析中,常用到的還有一種解析就是pull去解析xml格式的檔案。事實上android內部也是這樣做的。今天這個demo是來自傳智播客,可能技術已經被翻新了。 但是基礎原理還是那樣,希望基礎學習者,能夠理解,並實際寫一寫。 首先在src目錄下匯入我們將要解析的xml檔案:

Android使用pull解析xml檔案

Android解析xml檔案的時候,自己推薦是使用pull的方式來解析xml資原始檔,pull方式又有兩種,分別是XmlPullParser和XmlResourceParser兩種。下面來分別介紹。 一: XmlPullParser方式進行佈局解析。

Android 使用Pull解析XML檔案

解析XML檔案是非常常用的功能,在Android客戶端中,經常與伺服器通訊都需要xml檔案的支援,我們這裡介紹一個 簡單的xml檔案的解析,就是使用android中的pull方法進行解析。在java中,有dom解析和sax解析,這個pull解析有些類 似於sax解析,他也是

android 讀寫xml檔案時取得路徑的方法/data/sdcard/src

  package com.eboy.readwritexml; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream;

javaDOM解析xml檔案

本文介紹瞭如何利用DOM(即Document Object Model文件物件模型)解析xml檔案。 首先有一個xml檔案: <?xml version=\"1.0\" encoding=\"UTF-8\" ?> <User> <city

java和androidsax解析xml

學習安卓sax解析xml時,想用java寫一個解析某個xml檔案的Handler,程式碼如下: import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parser

Android如何建立xml檔案

SAX中想必大家對XML檔案讀取的方法已經比較熟悉了,在這裡我們就不多說了,直接說明如何將資訊寫成XML檔案,首先介紹Andoid SDK中的相關類。 類 說明 XmlSerializer Define an interface to serialziation

shape檔案用法二:在Android,用XML檔案實現圓角的效果

需求:好多時候,需要給元件加入圓角的效果,如下圖所示: 現在,要做的就是,實現 圖中所示的圓角效果。 第一步:在 res/drawable檔案下新增 ,檔案: btn_background_shape.xml 檔案。 /TestShape2/res/drawable/

Android-通過網路獲取xml檔案使用pull解析得到伺服器的資訊(新聞客戶端)

通過網路獲取xml檔案,使用pull解析該檔案得到伺服器中的資訊; demo中使用了一個開源的圖片載入包,故上傳原始碼方便檢視; 效果圖: 步驟: 1.連線伺服器獲取xml檔案; 2.使用pull解析xml檔案存入實體物件中; 3.解析後將實體物件存入List集合中;

java解析xml檔案的五種常見方法:DOM4J,dom,pull,SAX,Jdom

package com.zhidi.dom4jtest; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import or

android常用的xml生成與解析

總結了一下解析XML的三種方式。下圖為要解析的XML的格式。 解析了兩種方式的XML,一種是檔案,另一種是流。 程式碼中用到的許多的類是我虛構出來的,例如在第二種解析中用到的User類。使用者應該先寫這個類,寫出他們的屬性,並寫get和set方法才可以的。 <?xml

android開發時,xml檔案總是提示某一個錯誤,修改後仍然提示。

       哎,剛開始學android開發,開發環境好不容易搭建好,自己寫程式碼的時候難免犯錯,特別是xml編寫時如果出現了程式碼錯誤,錯誤提示會一直存在,即使修改了也存在,關掉專案重新開啟也存在,關掉Eclipse 重新啟動還存在。。。。糾結了 有沒有

Java使用DOM方法解析XML檔案

Java中使用DOM方法解析XML檔案 1、簡介 XML現在已經成為一種通用的資料交換格式,平臺的無關性使得很多場合都需要用到XML,本部落格將介紹用DOM方法解析XML檔案的方法,DOM解析是將XML檔案全部載入到記憶體,組裝成一顆DOM樹,然後通過節點以及節點之間的關係來解析XM

QT使用QXmlStreamReader解析XML檔案

轉載請註明連結與作者huihui1988 XML檔案由於其擴充套件性與相容性的優點,被廣泛用作軟體和系統的配置檔案。這裡簡要介紹一下QT下如何來解析XML檔案。 原始碼: xml_reader.h #ifndef XML_READER_H #define XML_RE

Python3解析XML檔案並存入Excel表

1. XML檔案部分資料如下: <?xml version='1.0' encoding='UTF-8'?> <nvd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://

Android解析xml檔案

public void pullxml(View v){ //獲取資原始檔並轉化為輸入流 try { InputStream is=ClassLoader.getSystemResourceAsStream("hey.xml");

在java專案如何利用Dom4j解析XML檔案獲取資料

在以前的學習.net時經常會遇到利用配置檔案來解決專案中一些需要經常變換的資料,比如資料庫的連線字串兒等。這個時候在讀取配置檔案的時候,我們通常會用到一個雷configuration,通過這個類來進行

XML:使用DOM技術解析xML檔案的城市,實現select級聯選擇

<?xml version="1.0" encoding="utf-8"?> <china> <province name="北京"> <city>東城區</city> <city>

Android 解析xml檔案

Android 中原始的xml檔案一般儲存在/res/xml路徑下,在用ADT開發中沒有該檔案,需要自己去建立一個xml的資料夾 成功定義一個xml資源後,在工程中若要引用該xml檔案 1 在xml檔案中引用語法    xml.file_name 2 在java程式碼中語法

Java之Pull方式生成xml檔案解析xml檔案

Pull XML解析器早已經被google整合到android sdk當中,它是google官方推薦的解析器。 如果我們要在Java桌面、J2ME等當中使用Pull方式生成xml檔案和解析xml檔案,需要用到kxml2; KXML解析器是基於普通XML PULL解析器的