溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

XML解析 DOM(1)

發(fā)布時間:2020-07-10 03:55:23 來源:網(wǎng)絡(luò) 閱讀:485 作者:緣起愿落 欄目:開發(fā)技術(shù)


    DOM解析使用Google提供的一個開源高效的XML解析工具GDataXMLNode ,它的效率要比NSXMLParser 要快10倍
 
     使用方式:
     1.小導(dǎo)入系統(tǒng)動態(tài)鏈接庫 libxml2.2.dylib
     2.在buildSettings中的Header Search Path 中添加 /usr/include/libxml2
     3.在buildSettings中的Other Linker Flags 中添加 -lxml2


  1. 獲取解析文件路徑
     NSString * xmlPath = [[NSBundle mainBundle] pathForResource:@"Person" ofType:@"xml"];
       

2.初始化xml字符串
  NSString * xmlStr = [NSString stringWithContentsOfFile:xmlPath encoding:NSUTF8StringEncoding error:nil];
  

3.初始化一個GDataXMLDocument對象 , 因?yàn)榻馕鰰r所有的內(nèi)容都是從該對象中獲取,(所以需要將要解析的內(nèi)容放入該對象)
   GDataXMLDocument * document = [[GDataXMLDocument alloc]initWithXMLString:xmlStr options:0 error:nil];
   

4.獲取根節(jié)點(diǎn) (GDataXmlElement)
   GDataXMLElement * rootElement = [document rootElement];
   

5.獲取根節(jié)點(diǎn)的所有子節(jié)點(diǎn)
    NSArray * personElements = [rootElement elementsForName:@"person"];
   

6.遍歷數(shù)組,得到每一個person節(jié)點(diǎn),然后再得到person節(jié)點(diǎn)下的子節(jié)點(diǎn)
 

    for (GDataXMLElement * element in personElements)

     {
        獲取person節(jié)點(diǎn)下的name節(jié)點(diǎn)
           GDataXMLElement * nameElement = [element elementsForName:@"name"].firstObject;
   
       (1).獲取開始標(biāo)簽和結(jié)束標(biāo)簽中間的值
            NSString * name = [nameElement stringValue];

    
        (2).獲取標(biāo)簽中屬性中存儲的數(shù)據(jù)
            屬性對應(yīng)的類GDataXMLNode
            GDataXMLNode * nameNode = [nameElement attributeForName:@"name"];
            NSString * name = [nameNode stringValue];

      }
    


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI