XML解析方案

2022-08-05 17:21:16 字數 2201 閱讀 3148

在ios中,解析xml的手段有很多

蘋果原生

nsxmlparser:sax方式解析,使用簡單

第三方框架

libxml2:純c語言,預設包含在ios sdk中,同時支援dom和sax方式解析

gdataxml:dom方式解析,由google開發,基於libxml2

xml解析方式的選擇建議

大檔案:nsxmlparser,libxml2

小檔案:gdataxml,nsxmlparser,libxml2

1.使用nsxmlparser進行解析

//建立xml解析器

nsxmlparser *parser = [[nsxmlparser alloc] initwithdata:data];

//設定**

parser.delegate = self;

//開始解析xml(阻塞式的)

[parser parse];

需要實現nsxmlparserdelegate**

開始解析xml文件

- (void)parserdidstartdocument:(nsxmlparser *)parser;

xml文件解析完畢

- (void)parserdidenddocument:(nsxmlparser *)parser;

解析到某個元素的開頭

- (void)parser:(nsxmlparser *)parser didstartelement:(nsstring *)elementname namespaceuri:(nullable nsstring *)namespaceuri qualifiedname:(nullable nsstring *)qname attributes:(nsdictionary*)attributedict;

解析到某個元素的結尾

- (void)parser:(nsxmlparser *)parser didendelement:(nsstring *)elementname namespaceuri:(nullable nsstring *)namespaceuri qualifiedname:(nullable nsstring *)qname;

我們一般在第三個**方法(解析到某個元素的開頭)進行資料的處理

if ([elementname isequaltostring:@"root"]) 

//利用mjextension框架將屬性字典轉換成模型

ddzvideo *video = [ddzvideo mj_objectwithkeyvalues:attributedict];

[self.videos addobject:video];

2.使用gdataxml進行解析

因為gdataxml不能使用cocoapods進行載入,

所以我們需要將gdataxml這個資料夾匯入到專案中。

匯入之後需要進行一些設定,否則將報錯

// libxml includes require that the target header search paths contain

//// /usr/include/libxml2

//// and other linker flags contain

//// -lxml2

1.在build settings中

往header search paths新增

/usr/include/libxml2
2.在build settings中

往other linker flags新增

-lxml2

3.將專案設定成arc與mrc混編

//載入整個文件

gdataxmldocument *doc = [[gdataxmldocument alloc] initwithdata:data options:0 error:nil];

//獲得所有video元素

nsarray *elements = [doc.rootelement elementsforname:@"video"];

for (gdataxmlelement *ele in elements)

解析XML檔案(SAX方式解析XML)

解析xml檔案 sax方式解析xml 對xml檔案解析有四種方法 dom sax jdom dom4j 現著重講一下sax解析xml檔案。1 通過一定的方式獲取檔名 獲得檔案路徑 string xmlfilepath ticanserviceaccess.getsystemsupportservic...

解析XML檔案(SAX方式解析XML)

解析xml檔案 sax方式解析xml 對xml檔案解析有四種方法 dom sax jdom dom4j 現著重講一下sax解析xml檔案。1 通過一定的方式獲取檔名 獲得檔案路徑 string xmlfilepath ticanserviceaccess.getsystemsupportservic...

JSON解析 XML解析

json解析 1大括號代表字典 2中括號 小括號 代表陣列 3冒號的左右兩邊分別為鍵和值 key value 4資料和資料之間 用逗號隔開 我們在本機上建立乙個file.xml,進行解析,並取出年齡35 json解析 本地讀取student.xm l檔案nsstring jstr nsstring ...