iOS 中 XML 資料交換格式

來源:互聯網
上載者:User

iOS 中 XML 資料交換格式

XML 是一種自描述的資料交換格式,但是 XML 的資料交換格式並沒有 JSON 來的輕便,但是無可否認的是,XML 的應用範圍也是非常廣泛的,比如在 ROS(一個開源機器人作業系統)中利用 XML 來描述包的依賴關係等,當然還有很多了。

對於 XML 文檔操作包括了“讀”與“寫”,讀入 XML 文檔並分析的過程稱為“解析” XML 文檔,“解析” XML 文檔在實際開發中是占很大比重的。

讀寫 XML 文檔,目前流行的有兩種模式:SAX 和 DOM 。SAM 是一種基於事件驅動的解析模式。解析 XML 的時候,程式從上到下讀取 XML 文檔,如果遇到開始標籤、結束標籤、屬性等,就會觸發相應的事件,但是這種解析 XML 檔案有一個弊端就是只能讀取 XML 文檔,而不能寫入 XML 文檔。但是也是有優點的,就是解析速度快,而iOS中推薦使用 SAX 解析模式。

DOM 模式是將 XML 文檔作為一棵樹狀結構來進行分析,提供擷取節點的內容,以及相關屬性,或是新增、刪除和修改節點的內容。 XML 解析器在載入 XML 檔案以後,DOM 將 XML 檔案的元素視為一個樹狀結構的節點,一次性讀入到記憶體中。如果文檔比較大,解析速度就會比較慢,這是不可避免的。但是 DOM 模式有一點是 SAX 無法取代的,就是 DOM 能夠修改 XML 文檔。

NSXML

NSXML 是蘋果自家預設的解析架構,採用 SAX 模式進行解析。它是 SAX 解析模式的代表。NSXML 架構中的核心是 NSXMLParser 和它的委託協議 NSXMLParserDelegate。主要的解析工作是在委託協議的實作類別中完成的,委託中定義了很多回調方法,在 SAX 解析器從上到下遍曆 XML 文檔的過程中,遇到開始標籤、結束標籤、文檔開始、文檔結束和字串就會觸發相關方法。

常用的方法:

(1)parserDidStartDocument --文檔開始的時候觸發

(2)parser:didStartElement:namespaceURI:qualifiedName:attributes --遇到一個開始標籤時開始觸發,其中 namespaceURI 部分是命名空間, qualifiedName 是限定名,attributes 是字典類型的屬性集合

(3)parser:foundCharacters --遇到字串時觸發

(4)parser:didEndElement:namespaceURI:qualifiedName --遇到結束標籤時觸發

(5)parserDidEndDocument --遇到文檔結束時觸發

下面實現一個解析的XMLParser類。

XMLParser.h

#import @interface XMLParser : NSObject //開始解析-(void)start;@end
XMLParser.m

-(void)start{    NSString* path = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"xml"];     //解析一個Test.xml檔案的文檔        NSURL *url = [NSURL fileURLWithPath:path];    //開始解析XML    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];    parser.delegate = self;    [parser parse];    NSLog(@"解析完成...");}

如有不足之處還望指出!


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.