建站代码网

热门标签

XML解析

XML是一种可扩展标记语言的缩写。由元素和内容构成。

xml实例:

<?xml version="1.0" encoding="UTF-8"?> <resp> <city>北京</city> <updatetime>11:35</updatetime> <wendu>3</wendu> <fengli>2级</fengli> <shidu>77%</shidu> <fengxiang>南风</fengxiang> <sunrise_1>07:02</sunrise_1> <sunset_1>16:56</sunset_1> <sunrise_2/> <sunset_2/> </resp>

1.XML声明:

XML 版本:(<?xml version="1.0"?>

XML的编码格式:encoding="UTF-8"?

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

2.根元素:

<resp> </resp>

3.元素:开始标签和结束标签

  • 拥有内容的元素:<city>北京</city>
  • 没有内容的元素:<city></city>
  • 没有内容的元素简写:<city/>
  • 一个元素可以嵌套若干个子元素(不能出现交叉嵌套)

4.一个元素可以拥有多个属性:

<video name="小黄人 第01部" length="30" /> //video元素拥有name和length两个属性 //属性值必须用 双引号"" 或者 单引号'' 括住
//实际上,属性表示的信息也可以用子元素来表示,比如 <video> <name>小黄人 第01部</name> <length>30</length> </video>

 5.XML的解析有两种方式:
DOM:一次性将整个文档加载进内存,比较适合解析小文件。

SAX:从根元素开始,一个元素一个元素的解析。比较适合解析大文件。

 6.苹果自带的XML解析方式:

 NSXMLParser:SAX方式解析,使用简单,操作方便。

NSXMLParser *parser = [[NSXMLParser alloc]initWithdata:data];//初始化xml解析器 parser.delegate = self;//设置代理 [parser parse];//开始解析(会阻塞线程)

NSXMLParser的代理:

-(void)parserDidStartdocument:(NSXMLParser *)parser{ // 当扫描到文档的开始时调用(开始解析) } -(void)parserDidEnddocument:(NSXMLParser *)parser{ // 当扫描到文档的结束时调用(解析完毕) } // 当扫描到元素的开始时调用(attributeDict存放着元素的属性) -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict { //存储起始标签 startTag = elementName; } // 当扫描到元素的结束时调用 -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ } //当解析器得到节点,起始标签和结束标签之间的数据时会调用 -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { //得到标签中的数据 if ([startTag isEqualToString:@"city"]) { NSLog(@"%@",string); }else if ([startTag isEqualToString:@"updatetime"]){ NSLog(@"%@",string); }else if ([startTag isEqualToString:@"fengli"]){ NSLog(@"%@",string); } }

7.使用第三方类库GDataXML对XML进行解析:(DOM解析方式)

     用cocopad安装GDataXML后,引入头文件#import "GDataXMLNode.h",然后发起数据请求,得到相应的data数据,通过GDataXML

热门信息

X