你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 中 XML 數據交換格式

iOS 中 XML 數據交換格式

編輯:IOS開發綜合

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(@"解析完成...");
}

微笑如有不足之處還望指出!


  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved