偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

了解iOS中XML解析

移動(dòng)開(kāi)發(fā) iOS
解析 XML 通常有兩種方式,DOM 和 SAX:DOM解析XML時(shí),讀入整個(gè)XML文檔并構(gòu)建一個(gè)駐留內(nèi)存的樹(shù)結(jié)構(gòu)(節(jié)點(diǎn)樹(shù)),通過(guò)遍歷樹(shù)結(jié)構(gòu)可以檢索任意XML節(jié)點(diǎn),讀取它的屬性和值。

iOSXML解析是本文要介紹的內(nèi)容,在iPhone開(kāi)發(fā)中,XML的解析有很多選擇,iOS SDK提供了NSXMLParser和libxml2兩個(gè)類(lèi)庫(kù),另外還有很多第三方類(lèi)庫(kù)可選,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。問(wèn)題是應(yīng)該選擇哪一個(gè)呢?

解析 XML 通常有兩種方式,DOM 和 SAX:

DOM解析XML時(shí),讀入整個(gè)XML文檔并構(gòu)建一個(gè)駐留內(nèi)存的樹(shù)結(jié)構(gòu)(節(jié)點(diǎn)樹(shù)),通過(guò)遍歷樹(shù)結(jié)構(gòu)可以檢索任意XML節(jié)點(diǎn),讀取它的屬性和值。而且通常情況下,可以借助XPath,直接查詢(xún)XML節(jié)點(diǎn)。

SAX解析XML,是基于事件通知的模式,一邊讀取XML文檔一邊處理,不必等整個(gè)文檔加載完之后才采取操作,當(dāng)在讀取解析過(guò)程中遇到需要處理的對(duì)象,會(huì)發(fā)出通知對(duì)其進(jìn)行處理。

一般在iOS平臺(tái)下,比較常用的XML解析類(lèi)庫(kù)有如下幾種:

NSXMLParser,http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html ,這是一個(gè)SAX方式解析XML的類(lèi)庫(kù),默認(rèn)包含在iOS SDK中,使用也比較簡(jiǎn)單。

libxml2,http://xmlsoft.org/,是一套默認(rèn)包含在iOS SDK中的開(kāi)源類(lèi)庫(kù),它是基于C語(yǔ)言的API,所以使用起來(lái)可能不如NSXML方便。這套類(lèi)庫(kù)同時(shí)支持DOM和SAX解析,libxml2的SAX解析方式還是非??岬模?yàn)樗梢赃呑x取邊解析,尤其是在從網(wǎng)上下載一個(gè)很大的XML文件,就可以一邊下載一邊對(duì)已經(jīng)下載好的內(nèi)容進(jìn)行解析,極大的提高解析效率。

TBXML,http://www.tbxml.co.uk/TBXML/TBXML_Free.html,這是一套輕量級(jí)的DOM方式的XML解析類(lèi)庫(kù),有很好的性能和低內(nèi)存占用,不過(guò)它不對(duì)XML格式進(jìn)行校驗(yàn),不支持XPath,并且只支持解析,不支持對(duì)XML進(jìn)行修改。

TouchXML,https://github.com/TouchCode/TouchXML,這也是一套DOM方式的XML解析類(lèi)庫(kù),支持XPath,不支持XML的修改。

KissXML,http://code.google.com/p/kissxml/,這是一套基于TouchXML的XML解析類(lèi)庫(kù),和TouchXML相比,支持了XML的修改。

TinyXML,http://www.grinninglizard.com/tinyxml/,這是一套小巧的基于C語(yǔ)言的DOM方式進(jìn)行XML解析的類(lèi)庫(kù),支持對(duì)XML的讀取和修改,不直接支持XPath,需要借助另一個(gè)相關(guān)的類(lèi)庫(kù)TinyXPath才可以支持XPath。

GDataXML,http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/,這是一套Google開(kāi)發(fā)的DOM方式XML解析類(lèi)庫(kù),支持讀取和修改XML文檔,支持XPath方式查詢(xún)。

那么對(duì)于如何在項(xiàng)目中選擇合適的XML解析類(lèi)庫(kù)呢?網(wǎng)上已經(jīng)有人對(duì)這幾款XML類(lèi)庫(kù)做過(guò)分析和對(duì)比,可參考《How To Choose The Best XML Parser for Your iPhone Project》http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project 一文,基本比較準(zhǔn)確和客觀,文中建議:

如果是讀取很小的XML文檔,性能基本上沒(méi)有什么差別,不過(guò)從調(diào)用的方便性來(lái)說(shuō),建議使用TouchXML、KissXML或GDataXML

如果是需要讀取和修改XML文檔,建議使用KissXML或GDataXML

如果需要讀取非常大的XML文檔,則建議使用libxml2或TBXML

如果你不想去調(diào)用第三方類(lèi)庫(kù),那么使用NSXML也可以

安裝說(shuō)明

GDataXML

1. 從http://code.google.com/p/gdata-objectivec-client/downloads/list下載“gdata-objective-c client library.”

2. 解壓縮文件,找到Source\XMLSupport,并且將其中的GDataXMLNode.h 和 GDataXMLNode.m文件拖到項(xiàng)目中

3. 選中項(xiàng)目,選中“Build Settings”標(biāo)簽頁(yè)

4. 將Build Settings頁(yè)中,頂部的“Basic”標(biāo)簽切換到“All”

5. 找到“Paths\Header Search Paths”項(xiàng),并添加“/usr/include/libxml2”到列表中

6. 找到“Linking\Other Linker Flags”項(xiàng),并添加“-lxml2”到列表中

在需要調(diào)用GDataXML的代碼文件頭部,加入:

  1. #import “GDataXMLNode.h” 

TouchXML

1. 從https://github.com/TouchCode/TouchXML下載最新TouchXML源碼

2. 解壓后,將其中的Sources目錄下的文件和目錄都拖到項(xiàng)目中

3. 選中項(xiàng)目,選中“Build Settings”標(biāo)簽頁(yè)

4. 將Build Settings頁(yè)中,頂部的“Basic”標(biāo)簽切換到“All”

5. 找到“Paths\Header Search Paths”項(xiàng),并添加“/usr/include/libxml2”到列表中

6. 找到“Linking\Other Linker Flags”項(xiàng),并添加“-lxml2”到列表中

iOS中xml的解析

在需要調(diào)用TouchXML的代碼文件頭部,加入:

  1. #import “TouchXML.h” 

TBXML

1. 從http://www.tbxml.co.uk/TBXML/TBXML_Free.html下載最新TBXML源碼

2. 解壓后,將其中的TBXML.h, TBXML.m, NSDataAdditions.h和NSDataAddtions.m四個(gè)文件拖到項(xiàng)目中

3. 添加對(duì)libz.dylib類(lèi)庫(kù)的應(yīng)用

在需要調(diào)用TBXML的代碼文件頭部,加入:

  1. #import “TBXML.h” 

使用說(shuō)明

  1. GDataXML 

讀取XML文件,并解析成為DOM文檔對(duì)象示例:

  1. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"xml"];  
  2. NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath];  
  3. NSError *error;  
  4. GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error];  
  5. if (doc == nil) { return nil; }  
  6. NSLog(@"%@", doc.rootElement);  
  7. [doc release];  
  8. [xmlData release]; 

小結(jié):關(guān)于了解iOSXML解析的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-02-22 14:10:25

PHPXML

2023-05-05 08:41:16

SQL字符函數(shù)

2013-06-08 11:04:18

Android開(kāi)發(fā)Pull解析XMLAndroid XML

2012-05-23 13:17:43

JavaJdomXML

2011-07-08 17:12:50

iOS XML

2013-06-08 17:09:35

Android開(kāi)發(fā)移動(dòng)開(kāi)發(fā)XML解析

2011-08-05 16:18:32

iOS XML 解析

2009-09-09 14:40:15

C# XML解析

2022-03-22 09:41:31

Java編程語(yǔ)言持久化

2009-12-02 10:39:26

PHP DOMDocu

2014-02-19 09:59:52

iOS開(kāi)發(fā)Html解析

2012-08-16 15:56:33

XML

2011-08-02 13:35:41

iOS開(kāi)發(fā) Get Post

2011-08-02 09:38:25

IOS 用戶(hù)設(shè)計(jì)

2011-08-08 14:13:47

iPhone XML NSXMLParse

2011-07-25 16:31:51

iOS XML 文件

2013-03-27 11:33:32

iOS開(kāi)發(fā)iOSjson解析方式

2010-09-28 10:03:15

DOM文檔對(duì)象模型

2009-09-09 13:57:28

C# XML解析

2014-12-31 14:09:23

xml解析
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)