国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

XML數據解析(系統方法)

2019-11-14 18:18:53
字體:
來源:轉載
供稿:網友

xml是一種自描述的數據交換格式。是一種非常重要的數據交換 格式,多年來一直用于各種計算機語言中。XML類似HTML,有一對對標簽對,格式比HTML嚴謹,一個<>開始,一個</>結尾.

解析的內容為:

<users>    <user id="001">        <name>張三</name>        <passWord>123456</password>        <nickname>小張</nickname>        <description>1111111111</description>    </user>        <user id="002">        <name>張三</name>        <password>2222222</password>        <nickname>小四兒</nickname>        <description>李四是個好學生</description>    </user>        <user id="003">        <name>張三</name>        <password>88888888</password>        <nickname>小五</nickname>        <description>1234567890</description>    </user>    </users>

事先已將數據讀取并存儲在data中.
創建一個類,繼承自NSObject,命名為userInfo

@PRoperty(nonatomic,copy)NSString *uID;@property(nonatomic,copy)NSString *name;@property(nonatomic,copy)NSString *password;@property(nonatomic,copy)NSString *nickname;@property(nonatomic,copy)NSString *description;

再創建一個類,同樣繼承自NSObject,命名為userParser,實現xml文件的讀取.

userParser.h

#import <Foundation/Foundation.h>#import "user.h"@interface userParser : NSObject<NSXMLParserDelegate>//存儲信息的數組@property(nonatomic,retain)NSMutableArray *array;//實例@property(nonatomic,retain)user *people;//創建字符串保存信息@property(nonatomic,copy)NSMutableString *buffer;//讀取xml文件-(void)parserWithString:(NSString *)string;@end

userparser.m

#import "userParser.h"@implementation userParser-(void)parserWithString:(NSString *)string{    //使用系統XML解析方法    NSXMLParser *parser=[[NSXMLParser alloc]initWithData:[string dataUsingEncoding:NSUTF8StringEncoding]];    //設置代理    parser.delegate=self;    //開始解析    [parser parse];}#pragma mark ---NSXMLParserDelegate---//開始解析- (void)parserDidStartDocument:(NSXMLParser *)parser{    NSLog(@"it begin");}//解析結束- (void)parserDidEndDocument:(NSXMLParser *)parser{    NSLog(@"it is over");    for (int i=0; i<_array.count; i++) {        user *user=_array[i];        NSLog(@"%@,%@,%@,%@,%@",user.uID,user.name,user.password,user.nickname,user.description);    }}//遇到開始標簽//attributeDict標簽屬性- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{    if ([elementName isEqualToString:@"users"]) {        _array=[[NSMutableArray alloc]init];    }    else if ([elementName isEqualToString:@"user"])    {        _people=[[user alloc]init];        //<user id="3">        _people.uID=[attributeDict objectForKey:@"id"];    }    else if ([elementName isEqualToString:@"name"])    {        _buffer=[[NSMutableString alloc]init];    }    else if ([elementName isEqualToString:@"password"])    {        _buffer=[[NSMutableString alloc]init];    }    else if ([elementName isEqualToString:@"nickname"])    {        _buffer=[[NSMutableString alloc]init];    }    else if ([elementName isEqualToString:@"description"])    {        _buffer=[[NSMutableString alloc]init];    }    }//結束標簽- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{    if ([elementName isEqualToString:@"name"]) {        _people.name=_buffer;    }    else if ([elementName isEqualToString:@"password"])    {        _people.password=_buffer;    }    else if ([elementName isEqualToString:@"nickname"])    {        _people.nickname=_buffer;    }else if ([elementName isEqualToString:@"description"])    {        _people.description=_buffer;    }    else if ([elementName isEqualToString:@"user"])    {        [_array addObject:_people];    }}//讀取內容- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{    //NSCharacterSet字符串結合,取出字符串中的空格    [_buffer appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];}

在viewcontroller中,創建userparser的實例對象,通過parserWithString方法實現數據解析

 userParser *uparser=[[userParser alloc]init];
    [uparser parserWithString:user];

 

注:將數據解析與界面顯示分開寫有助于減低程序的耦合,同時也符合MVC編程模式.

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤庆县| 天台县| 余干县| 宁强县| 商水县| 通渭县| 彭州市| 文成县| 乌兰县| 旬邑县| 出国| 泌阳县| 家居| 怀远县| 平阴县| 鄂托克前旗| 德化县| 肥东县| 和政县| 朝阳市| 股票| 渝中区| 鹿邑县| 德保县| 和静县| 阜新| 思南县| 深泽县| 闽清县| 马公市| 甘泉县| 新安县| 海丰县| 页游| 江北区| 左贡县| 永和县| 当涂县| 呈贡县| 汕头市| 神木县|