iOS XML

1鉴逞、XML的認(rèn)識(shí)

1鹊奖、什么是XML

  • 全稱是Extensible Markup Language长窄,譯作“可擴(kuò)展標(biāo)記語言”
  • 跟JSON一樣按厘,也是常用的一種用于交互的數(shù)據(jù)格式
  • 一般也叫XML文檔(XML Document

2液走、XML語法

  • 一個(gè)常見的XML文檔一般由以下部分組成
  • 文檔聲明
    • 在XML文檔的最前面碳默,必須編寫一個(gè)文檔聲明,用來聲明XML文檔的類型
    • 最簡單的聲明 :<?xml version="1.0" ?>
    • 用encoding屬性說明文檔的字符編碼:<?xml version="1.0" encoding="UTF-8" ?>
  • 元素(Element)
  • 屬性(Attribute)
    • 一個(gè)元素可以擁有多個(gè)屬性
    • 屬性值必須用 雙引號(hào)"" 或者 單引號(hào)'' 括住
    • 實(shí)際上育灸,屬性表示的信息也可以用子元素來表示

3腻窒、XML的解析方式

  • SAX:從根元素開始,按順序一個(gè)元素一個(gè)元素往下解析磅崭,比較適合解析大文件

    • 大小文件都可以
    • NSXMLParser 蘋果原生
  • DOM:一次性將整個(gè)XML文檔加載進(jìn)內(nèi)存儿子,比較適合解析小文件

    • 最好是小文件
    • GDataXML:DOM方式解析,由Google開發(fā)砸喻,基于libxml2

4柔逼、第三方框架

  • libxml2:純C語言,默認(rèn)包含在iOS SDK中割岛,同時(shí)支持DOM和SAX方式解析
  • GDataXML:DOM方式解析愉适,由Google開發(fā),基于libxml2

5癣漆、XML解析方式的選擇建議

  • 大文件:NSXMLParser维咸、libxml2
  • 小文件:GDataXML、NSXMLParser、libxml2

二癌蓖、NSXMLParse

基本用法

  • 1.創(chuàng)建解析器來解析
// 創(chuàng)建XML解析器
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];

// 設(shè)置代理
parser.delegate = self;

// 開始解析XML(parse方法是阻塞式的)
[parser parse];
  • 2.代理對象要遵守NSXMLParserDelegate協(xié)議瞬哼,實(shí)現(xiàn)代理方法
/**
 * 解析到某個(gè)元素的結(jié)尾(比如解析</videos>)
 */
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{

}

/**
 * 解析到某個(gè)元素的開頭(比如解析<videos>)
 */
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{

}

/**
 * 開始解析XML文檔
 */
- (void)parserDidStartDocument:(NSXMLParser *)parser
{

}

/**
 * 解析完畢
 */
- (void)parserDidEndDocument:(NSXMLParser *)parser
{

}

四、GDataXML

  • 配置
配置1.png

配置2.png
  • 設(shè)置非ARC標(biāo)記
設(shè)置非ARC標(biāo)記.png
  • 具體用法
// 加載整個(gè)文檔
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];

// 獲得根節(jié)點(diǎn)
doc.rootElement;

// 獲得其他節(jié)點(diǎn)
[element elementsForName:@"video"];

// 獲得節(jié)點(diǎn)的屬性
[element attributeForName:@"name"].stringValue;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末租副,一起剝皮案震驚了整個(gè)濱河市坐慰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌用僧,老刑警劉巖结胀,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異责循,居然都是意外死亡糟港,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門沼死,熙熙樓的掌柜王于貴愁眉苦臉地迎上來着逐,“玉大人,你說我怎么就攤上這事意蛀∷时穑” “怎么了?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵县钥,是天一觀的道長秀姐。 經(jīng)常有香客問我,道長若贮,這世上最難降的妖魔是什么省有? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮谴麦,結(jié)果婚禮上蠢沿,老公的妹妹穿的比我還像新娘。我一直安慰自己匾效,他們只是感情好舷蟀,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著面哼,像睡著了一般野宜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魔策,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天匈子,我揣著相機(jī)與錄音,去河邊找鬼闯袒。 笑死虎敦,一個(gè)胖子當(dāng)著我的面吹牛游岳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播其徙,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼吭历,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了擂橘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤摩骨,失蹤者是張志新(化名)和其女友劉穎通贞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恼五,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昌罩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灾馒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茎用。...
    茶點(diǎn)故事閱讀 40,926評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖睬罗,靈堂內(nèi)的尸體忽然破棺而出轨功,到底是詐尸還是另有隱情,我是刑警寧澤容达,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布古涧,位于F島的核電站,受9級(jí)特大地震影響花盐,放射性物質(zhì)發(fā)生泄漏羡滑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一算芯、第九天 我趴在偏房一處隱蔽的房頂上張望柒昏。 院中可真熱鬧,春花似錦熙揍、人聲如沸职祷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堪旧。三九已至,卻和暖如春奖亚,著一層夾襖步出監(jiān)牢的瞬間淳梦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工昔字, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爆袍,地道東北人首繁。 一個(gè)月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像陨囊,于是被迫代替她去往敵國和親弦疮。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 引子 數(shù)據(jù)解析在iOS開發(fā)中是不可或缺的一環(huán)蜘醋,從服務(wù)器獲取到的數(shù)據(jù)胁塞,就目前來說無非就是XML和json兩種。今天我...
    dalianer閱讀 857評論 0 5
  • JSON JSON和XML都是需要解析的 JSON是一種輕量級(jí)的數(shù)據(jù)格式压语,一般用于數(shù)據(jù)交互服務(wù)器返回給客戶端的數(shù)據(jù)...
    JonesCxy閱讀 1,864評論 2 10
  • 讀寫XML文檔啸罢,目前流行的兩種模式:SAX和DOM。 1.SAX是一種基于事件驅(qū)動(dòng)的解析模式胎食。解析XML的時(shí)候扰才,程...
    XLsn0w閱讀 2,173評論 0 1
  • 1 數(shù)據(jù)解析 在iOS開發(fā)中,常見的數(shù)據(jù)傳輸格式有兩種:JSON和XML厕怜。目前JSON由于其體積小衩匣、傳輸速度快等優(yōu)...
    歲與禾閱讀 1,056評論 2 11
  • SAX和DOM,NSXMLParser和GDataXML和ONOXML 基于不同的API有兩種不同的解析方式: 1...
    它是一只肥貓閱讀 743評論 0 1