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

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

iOSxml解析

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

iOS xml 解析方法有兩種:SAX , DOM.

SAX 不用借助第三方,在解析過程中逐行解析.(NSXMLParser,需要實現代理),具體步驟:

1.獲取文件路徑.

2.創建 NSXMLParser 對象.

3.遵守協議,設置代理.

4.實現代理方法

  1>- (void)parserDidStartDocument:  ---- 開始解析

  2>- (void)parserDidEndDocument: ----解析結束

  3>- (void)parser:didStartElement:namespaceURI:qualifiedName:attributes: ----遇到開始標簽

  4>- (void)parser:didEndElement:namespaceURI:qualifiedName: ----遇到結束標簽

  5>- (void)parser: foundCharacters:  -----遇到值

 

詳細代碼:

 1 - (IBAction)xmlParserWithSAX:(id)sender { 2      3     //獲取文件路徑 4     NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"]; 5     //轉換為url 6     NSURL *url = [[NSURL alloc]initFileURLWithPath:filePath]; 7     //創建 NSXMLParser 對象 8     NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:url]; 9     parser.delegate = self;10     //開始解析11     [parser parse];12 }

代理方法實現:

 1 /** 2  *  開始解析 xml 3  */ 4 - (void)parserDidStartDocument:(NSXMLParser *)parser{ 5     NSLog(@"開始解析"); 6     self.studentArray = [[NSMutableArray alloc]init]; 7 } 8  9 10 /**11  *  結束解析 xml12  */13 - (void)parserDidEndDocument:(NSXMLParser *)parser{14     NSLog(@"解析結束");15     for (StudentModel *stu in self.studentArray) {16         NSLog(@"%@",stu);17     }18 }19 20 /**21  *  遇到開始標簽22  */23 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{24     NSLog(@"遇到開始節點:%@",elementName);25     if ([elementName isEqualToString:@"student"]) {26         self.studentModel = [[StudentModel alloc]init];27     }28 }29 30 /**31  *  遇到結束標簽32  */33 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{34     NSLog(@"遇到結束節點:%@",elementName);35    if ([elementName isEqualToString:@"name"]){36         self.studentModel.name = self.str;37     }else if ([elementName isEqualToString:@"age"]){38         self.studentModel.age = self.str;39     }else if ([elementName isEqualToString:@"gender"]){40         self.studentModel.gender = self.str;41     }else if ([elementName isEqualToString:@"student"]) {42         [self.studentArray addObject:self.studentModel];43     }44 }45 46 /**47  *  遇到的值48  */49 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{50     NSLog(@"%@",string);51     self.str = string;52 }

 

DOM 解析,先獲取全部文件內容,找出層次結構,需要用到第三方(GDataXMLNode).具體步驟:

1.修改配置 Header Search Paths 加上:/usr/include/libxml2  

  Other Linker Flags  加上:-lxml2

2.獲取文件路徑

3.獲取文件內容

4.獲取 xml 結構

5.遍歷節點取值

詳細代碼:

 1 - (IBAction)xmlParserWithDOM:(id)sender { 2      3     //獲取文件地址 4     NSString *filPath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"]; 5     NSError *error = nil; 6     //獲取文件內容 7     NSString *contact = [NSString stringWithContentsOfFile:filPath encoding:NSUTF8StringEncoding error:&error]; 8     if (error == nil) { 9         NSLog(@"%@",contact);10     }else {11         NSLog(@"%@",error);12     }13     //第三方14     GDataXMLDocument *document = [[GDataXMLDocument alloc]initWithXMLString:contact options:0 error:nil];15     16     //獲取 xml 根節點17     GDataXMLElement *rootElement = [document rootElement];18     19     //獲取 根節點包含的節點20     NSArray *array = [rootElement elementsForName:@"student"];21     22     NSMutableArray *arr = [[NSMutableArray alloc]init];23     24     //遍歷節點,取值25     for (GDataXMLElement *ele in array) {26         StudentModel *model = [[StudentModel alloc]init];27         model.name = [[[ele elementsForName:@"name"] firstObject] stringValue];28         model.age = [[[ele elementsForName:@"age"] firstObject] stringValue];29         model.gender = [[[ele elementsForName:@"gender"] firstObject] stringValue];30         [arr addObject:model];31         32     }33     34     for (StudentModel *stu in arr) {35         NSLog(@"%@",stu);36     }37     38 }

GDataXMLNode.zip 下載


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通许县| 盘锦市| 龙井市| 安图县| 双流县| 安吉县| 平顶山市| 阿坝| 铜梁县| 平武县| 深泽县| 辽源市| 安阳市| 新郑市| 运城市| 长泰县| 庆元县| 贵定县| 天全县| 彭州市| 丁青县| 临漳县| 铜鼓县| 通渭县| 弋阳县| 布拖县| 罗定市| 灵寿县| 于都县| 天等县| 台湾省| 长葛市| 镇坪县| 武功县| 黄冈市| 二连浩特市| 海门市| 上饶县| 永吉县| 锡林浩特市| 崇文区|