解析XML文件-KissXML

可能報(bào)錯(cuò)

  1. 使用KissXML解析xml文件時(shí),#import<libxml/tree.h>找不到
    原因:類庫(kù)沒(méi)有鏈接進(jìn)來(lái)
    方法:鏈接類庫(kù):Build Settings 中搜索Header Search Paths,并設(shè)置為$(SDKROOT)/usr/include/libxml2

  2. xcod9以后使用時(shí)報(bào)錯(cuò)
    在DDXMLDocument.m引入頭文件#import <libxml2/libxml/parser.h>

使用

導(dǎo)入頭文件#import "DDXML.h"
方法一

//獲取文件
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"poetryXML" ofType:@"xml"];
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    NSError *error;
    //創(chuàng)建xml文檔模型
    DDXMLDocument *doc = [[DDXMLDocument alloc] initWithData:data options:0 error:&error];
    if (error) {
        
        LOGS(@"%@",error);
    }else{
        LOGS(@"獲取成功");
    }

    //獲取根元素
    DDXMLElement *root = [doc rootElement];
    //方法1:層層遍歷
    NSArray *RowArr = [root elementsForName:@"Row"];
    for (DDXMLElement *row in RowArr) {

        NSArray *CellArr = [row elementsForName:@"Cell"];
        for (DDXMLElement *cell in CellArr) {
            
            NSArray *DataArr = [cell elementsForName:@"Data"];
            for (DDXMLElement *data in DataArr) {
                
                //獲取屬性
               // NSString *ss = [[data attributeForName:@"ss"] stringValue];
               //NSLog(@"%@",ss);
                
                //獲取內(nèi)容
               // LOGS(@"count--%ld",data.childCount);
                NSString *str = [[data childAtIndex:0] stringValue];
               // LOGS(@"str--%@",str);
            }
        }
    }

方法2:xml中XPath導(dǎo)航定位,XPath可到w3school學(xué)習(xí)
//方法1:

    //所有row
    NSArray *rowArr = [[doc children][0] children];
    for (DDXMLNode *row in rowArr) {
        
        //獲取每詩(shī)歌的信息
        NSArray *ssArr = [row nodesForXPath:@"child::Cell/Data" error:nil];
       // NSLog(@"%@",[[ssArr[0] childAtIndex:0] stringValue]);
       // NSLog(@"%@",[[ssArr[1] childAtIndex:0] stringValue]);
       // NSLog(@"%@",[[ssArr[2] childAtIndex:0] stringValue]);

    }

方法2:

    //第一次試的時(shí)候,如果xml文檔有命名空間(xmln="XXX"),該方法居然失效。修改過(guò)xml后又沒(méi)問(wèn)題了,可能是xml的問(wèn)題
    NSError *error2;
    NSArray *nodeRowArr = [doc nodesForXPath:@"http://Row" error:&error2];
    for (DDXMLNode *row in nodeRowArr) {

        for (DDXMLNode *cell in [row children]) {
            
            for (DDXMLNode *data in [cell children]) {
                
                //獲取屬性
                //NSString *ss = [data  stringValue];
              //  NSArray *ssArr = [data nodesForXPath:@"attribute::ss" error:nil];
               // NSLog(@"ss--%@",[ssArr[0] stringValue]);
                //獲取內(nèi)容
                // LOGS(@"count--%ld",data.childCount);
                //獲取內(nèi)容
                NSString *str = [data stringValue];
                 LOGS(@"str--%@",str);
            }
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,172評(píng)論 3 119
  • 天下有三種事情,你的事,我的事,老天的事,做好自己的事,才是最重要的,先把自己的事情管理好,才可以引發(fā)別人,要自己...
    馮妮閱讀 365評(píng)論 0 1
  • 第十二章 關(guān)于當(dāng)事人中心治療的研究思路 對(duì)于相對(duì)來(lái)說(shuō)不太熟悉美國(guó)心理學(xué)實(shí)證研究傳統(tǒng)的歐洲讀者,我怎樣才能向他們...
    暖陽(yáng)_1332閱讀 1,359評(píng)論 0 3
  • ①自我介紹:大家好,我是冰?心say,即將成為一名英語(yǔ)教師。自己平時(shí)喜歡做運(yùn)動(dòng),讀書(shū),聽(tīng)音樂(lè)等。我的座右銘是Not...
    竺冰落閱讀 418評(píng)論 1 3
  • 泰國(guó)最受人關(guān)注的莫過(guò)于人妖了。當(dāng)初選擇去泰國(guó)時(shí),同事們都說(shuō):你帶孩子去泰國(guó)不太好吧。是呀,泰國(guó)有人妖表演,帶孩子去...
    青鸞gl閱讀 1,881評(píng)論 0 2

友情鏈接更多精彩內(nèi)容