Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android官方開發文檔Training系列課程中文版:網絡操作之XML解析

Android官方開發文檔Training系列課程中文版:網絡操作之XML解析

編輯:關於Android編程

原文地址:http://android.xsoftlab.net/training/basics/network-ops/xml.html

擴展標記語言(XML)是一系列有序編碼的文檔。它是一種很受歡迎的互聯網數據傳輸格式。像需要頻繁更新內容的網站來說,比如新聞站點或者博客,需要經常更新它們的XML源,以使外部程序可以保持內容的同步變化。對於含有網絡連接態的APP應用來說,上傳及解析XML數據是一個通用的任務。這節課將會學習如何解析XML文檔及如何使用XML中的數據。

選擇解析器

我們推薦使用XmlPullParser解析器,在Android上它是一種高效的可維護的解析器。Android中含有該接口的兩個實現:

KXmlParser由XmlPullParserFactory.newPullParser()獲得。 ExpatPullParser由Xml.newPullParser()獲得。

兩個選擇都可以。這裡使用的是ExpatPullParser。

分析源

解析源的第一步就是判斷哪種屬性是你所關注的。解析器會將這些屬性所對應的數據提取出,將剩余的部分忽略。

下面是示例APP中的部分摘錄。每個實例都是以entry的形式出現在源裡,並且entry會包含若干個嵌套標簽。

 
" + getResources().getString(R.string.page_title) + "");
    htmlString.append("" + getResources().getString(R.string.updated) + " " + 
            formatter.format(rightNow.getTime()) + "");

    try {
        stream = downloadUrl(urlString);        
        entries = stackOverflowXmlParser.parse(stream);
    // Makes sure that the InputStream is closed after the app is
    // finished using it.
    } finally {
        if (stream != null) {
            stream.close();
        } 
     }

    // StackOverflowXmlParser returns a List (called "entries") of Entry objects.
    // Each Entry object represents a single post in the XML feed.
    // This section processes the entries list to combine each entry with HTML markup.
    // Each entry is displayed in the UI as a link that optionally includes
    // a text summary.
    for (Entry entry : entries) {       
        htmlString.append("

" + entry.title + "

"); // If the user set the preference to include summary text, // adds it to the display. if (pref) { htmlString.append(entry.summary); } } return htmlString.toString(); } // Given a string representation of a URL, sets up a connection and gets // an input stream. private InputStream downloadUrl(String urlString) throws IOException { URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(10000 /* milliseconds */); conn.setConnectTimeout(15000 /* milliseconds */); conn.setRequestMethod("GET"); conn.setDoInput(true); // Starts the query conn.connect(); return conn.getInputStream(); }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved