NSXMLParser解析簡例,NSXMLParser解析簡

來源:互聯網
上載者:User

NSXMLParser解析簡例,NSXMLParser解析簡

本篇以以下類型的XML為例解析:

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="e0">密碼錯誤</string>

    <string name="e1">手機號不存在</string>

    <string name="e2">未找到該城市</string>

    <string name="e3">參數異常</string>

    <string name="e4">魚種庫為空白</string>

    <string name="e6">檔案為空白</string>

    <string name="e7">參數異常或為空白</string>

    <string name="e8">發布失敗</string>

    <string name="e10">token異常,請重新登入</string>

    <string name="e11">釣點不存在</string>

    <string name="e12">釣點id未找到</string>

    <string name="e13">釣點id錯誤</string>

    <string name="e14">收藏失敗</string>

    <string name="e15">已收藏</string>

    <string name="e16">經緯度參數錯誤</string>

    <string name="e18">城市不可為空</string>

    <string name="e17">無更多釣點</string>

    <string name="e19">插入失敗</string>

    <string name="e20">手機號碼或驗證碼不正確</string>

    <string name="e21">參數類型錯誤</string>

    <string name="e22">資料寫入錯誤</string>

</resources>


-(void)parserXMLFile

{

    //開啟xml,讀取檔案內容後關閉檔案

    NSString * path  = [[NSBundle mainBundle] pathForResource:@"error" ofType:@"xml"];

    NSFileHandle * file = [NSFileHandle fileHandleForReadingAtPath:path];

    NSData * data = [file readDataToEndOfFile];

    [file closeFile];

    //初始化解析工具

    NSXMLParser * m_parser = [[NSXMLParser alloc]initWithData:data];

    //設定代理

    [m_parser setDelegate:self];

    //開始解析,設定解析結果flag,解析結束後會執行

    BOOL flag = [m_parser parse];

    if (flag) {

        QLLog(@"解析成功");

    }else{

        QLLog(@"解析失敗");

    }

}

//開始解析

-(void)parserDidStartDocument:(NSXMLParser *)parser

{

    dicXML = [[NSMutableDictionary alloc]initWithCapacity:10];

}

//遇到開始標記

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

{

    //QLLog(@"elementName:%@\n namespaceURI:%@\n qName:%@ \n attributeDic:%@",elementName,namespaceURI,qName,attributeDict);

    

    if ([elementName isEqualToString:@"string"]) {

        keyCode = [attributeDict objectForKey:@"name"]; //錯誤碼

        QLLog(@"keyCode:%@",keyCode);

    }

}

//遇到結束標記

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

    //QLLog(@"end:  elementName:%@\n namespaceURI:%@\n qName:%@ \n",elementName,namespaceURI,qName);

}

//節點中有值時進入此方法

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

    QLLog(@"key:%@",keyCode);

    QLLog(@"value:%@",string);//錯誤說明

    string = [string stringByReplacingOccurrencesOfString:@"\n" withString:@""];

    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];

    if(keyCode.length&&string.length){

        [dicXML setObject:string forKey:keyCode];

    }

}

//解析結束

-(void)parserDidEndDocument:(NSXMLParser *)parser

{

    QLLog(@"dicData:%@",dicXML);

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.