你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開辟中罕見的解析XML的類庫和扼要裝置辦法

iOS開辟中罕見的解析XML的類庫和扼要裝置辦法

編輯:IOS開發綜合

在iPhone開辟中,XmlRss/ target=_blank class=infotextkey>Xml的解析有許多選擇,IOS SDK供給了NSXmlRss/ target=_blank class=infotextkey>XmlParser和libXml2兩個類庫,別的還有許多第三方類庫可選,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。成績是應當選擇哪個呢?
解析 XML 平日有兩種方法,DOM 和 SAX:
DOM解析XML時,讀入全部XML文檔並構建一個駐留內存的樹構造(節點樹),經由過程遍歷樹構造可以檢索隨意率性XML節點,讀取它的屬性和值。並且平日情形下,可以借助XPath,直接查詢XML節點。
SAX解析XML,是基於事宜告訴的形式,一邊讀取XML文檔一邊處置,不用等全部文檔加載完以後才采用操作,當在讀取解析進程中碰到須要處置的對象,會收回告訴對其停止處置。
普通在IOS平台下,比擬經常使用的XML解析類庫有以下幾種:
NSXMLParser,http://developer.apple.com/library/IOS/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html ,這是一個SAX方法解析XML的類庫,默許包括在iOS SDK中,應用也比擬簡略。
libxml2,http://xmlsoft.org/,是一套默許包括在iOS SDK中的開源類庫,它是基於C說話的API,所以應用起來能夠不如NSXML便利。這套類庫同時支撐DOM和SAX解析,libxml2的SAX解析方法照樣異常酷的,由於它可以邊讀取邊解析,特別是在從網高低載一個很年夜的XML文件,便可以一邊下載一邊對曾經下載好的內容停止解析,極年夜的進步解析效力。
TBXML,http://www.tbxml.co.uk/TBXML/TBXML_Free.html,這是一套輕量級的DOM方法的XML解析類庫,有很好的機能和低內存占用,不外它纰謬XML格局停止校驗,不支撐XPath,而且只支撐解析,不支撐對XML停止修正。
TouchXML,https://github.com/TouchCode/TouchXML,這也是一套DOM方法的XML解析類庫,支撐XPath,不支撐XML的修正。
KissXML,http://code.谷歌.com/p/kissxml/,這是一套基於TouchXML的XML解析類庫,和TouchXML比擬,支撐了XML的修正。
TinyXML,http://www.grinninglizard.com/tinyxml/,這是一套玲珑的基於C說話的DOM方法停止XML解析的類庫,支撐對XML的讀取和修正,不直接支撐XPath,須要借助另外一個相干的類庫TinyXPath才可以支撐XPath。
GDataXML,http://code.谷歌.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/,這是一套Google開辟的DOM方法XML解析類庫,支撐讀取和修正XML文檔,支撐XPath方法查詢。
那末關於若何在項目當選擇適合的XML解析類庫呢?網上曾經有人對這幾款XML類庫做過火析和比較,可參考《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 一文,根本比擬精確和客不雅,文中建議:
假如是讀取很小的XML文檔,機能根本上沒有甚麼差異,不外從挪用的便利性來講,建議應用TouchXML、KissXML或GDataXML
假如是須要讀取和修正XML文檔,建議應用KissXML或GDataXML
假如須要讀取異常年夜的XML文檔,則建議應用libxml2或TBXML
假如你不想去挪用第三方類庫,那末應用NSXML也能夠

裝置解釋
GDataXML
1. 從http://code.谷歌.com/p/gdata-objectivec-client/downloads/list下載“gdata-objective-c client library.”
2. 解緊縮文件,找到Source\XMLSupport,而且將個中的GDataXMLNode.h 和 GDataXMLNode.m文件拖到項目中
3. 選中項目,選中“Build Settings”標簽頁
4. 將Build Settings頁中,頂部的“Basic”標簽切換到“All”
5. 找到“Paths\Header Search Paths”項,並添加“/usr/include/libxml2”到列表中
6. 找到“Linking\Other Linker Flags”項,並添加“-lxml2”到列表中

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615451657.png (599×484)

在須要挪用GDataXML的代碼文件頭部,參加:
#import “GDataXMLNode.h”

TouchXML
1. 從https://github.com/TouchCode/TouchXML下載最新TouchXML源碼
2. 解壓後,將個中的Sources目次下的文件和目次都拖到項目中
3. 選中項目,選中“Build Settings”標簽頁
4. 將Build Settings頁中,頂部的“Basic”標簽切換到“All”
5. 找到“Paths\Header Search Paths”項,並添加“/usr/include/libxml2”到列表中
6. 找到“Linking\Other Linker Flags”項,並添加“-lxml2”到列表中
在須要挪用TouchXML的代碼文件頭部,參加:
#import “TouchXML.h”
TBXML
1. 從http://www.tbxml.co.uk/TBXML/TBXML_Free.html下載最新TBXML源碼
2. 解壓後,將個中的TBXML.h, TBXML.m, NSDataAdditions.h和NSDataAddtions.m四個文件拖到項目中
3. 添加對libz.dylib類庫的運用
在須要挪用TBXML的代碼文件頭部,參加:
#import “TBXML.h”


應用解釋
GDataXML
讀取XML文件,並解析成為DOM文檔對象示例:

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

【iOS開辟中罕見的解析XML的類庫和扼要裝置辦法】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

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