第 26 章
XML 解析、 RSS與表格視圖 Cell 的展開
對開發者來說,其中最重要的一件工作,就是需要對開發的應用程式做資料的操作處理。資料可以使用多種格式來呈現,對每一個開發者來說,精通其中一項是一種關鍵能力。特別針對行動裝置應用程式來說,與網頁應用程式做數據資料交換的情況非常普遍。這樣的情況下,資料的呈現常會變動,通常不是使用 JSON 就是 XML 格式。
iOS SDK 提供了相關類別來處理。為了處理 JSON 資料,有一個 JSONSerialization
類別。這個類別可以讓開發者輕易地將 JSON 資料轉換為 Foundation 物件,或者反向轉換。我已經在第四章介紹過 JSON 的解析。本章我們要來瞭解一下解析 XML 資料的 API。
iOS 提供 XMLParser
類別,負責處理所有困難的工作,透過一些有用的委派方法(delegate methods)讓我們具備處理解析每個步驟的工具。我必須說,XMLParser
是一個非常方便的類別,讓 XML 的解析變得很簡單。
為了更具體的說明,我將介紹我們會用到的 XMLParserDelegate
協定,以及它的每個方法。這個協定定義了一些用來實作 XML 的解析的可選的方法(optional method)。先做個說明,每一個 XML 資料被視為在 iOS 的 XML 文件。以下是你通常會應付的核心方法:
parserDidStartDocument
– 解析開始時此方法會被呼叫。很清楚的每一個 XML 檔會被呼叫一次。parserDidEndDocument
– 這個是第一個動作的結束,在 XML 檔解析完成後被呼叫。parser(_:parseErrorOccurred:)
– 解析過程中如果發生錯誤這個委派方法會被呼叫,這個方法包含了一個 error 物件可以讓你定義實際的錯誤。parser(_:didStartElement:namespaceURI:qualifiedName:attributes:)
– 如果當元素(element)的公開標籤(例如)被找到時會呼叫。 parser(_:didEndElement:namespaceURI:qualifiedName:)
– 相較於上一個方法,這個方法在元素標籤結束(例如 </title>)被找到時會被呼叫parser(_:foundCharacters:)
– 這個方法在解析元素的內容時會被呼叫。它的第二個參數是字串值,包含了剛解析過的字元。
為了讓你了解這些方法的用法,我們將建立一個簡單的 RSS 閱讀器 App。這個 App 會提供一個 RSS feed(以 XML 格式),然後將解析內容後的資料顯示在表格視圖中。
本文摘自《iOS 17 App程式設計進階攻略》一書。如果你想繼續閱讀和下載完整程式碼,你可以從AppCoda網站購買完整電子版,全書範例檔皆可下載。