XML分为两种解析方式
- 第一种是 逐行解析方式 -- 使用系统解析器NSXMLParser
如下代码
- (IBAction)SAX解析:(id)sender {
NSString *path = [[NSBundle mainBundle] pathForResource:@"stu_xml" ofType:@"xml"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSXMLParser *XML = [[NSXMLParser alloc] initWithData:data];
XML.delegate = self;
[XML parse];
}
需要签订协议<NSXMLParserDelegate>
设置代理人
实现代理人方法
如下:
// 1.解析器开始
-(void)parserDidStartDocument:(NSXMLParser *)parser {
}
//解析器结束
- (void)parserDidEndDocument:(NSXMLParser *)parser {
}
// 2.节点头调用的方法,记录当前节点,方便后续赋值
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{
}
// 节点的值
// 根据节点值决定值,没有值时对应的结果\n\t
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
// 4. 遇到节点尾 调用的方法 方法的回调
// 判断当前节点结束,
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
// 解释失败时调用这个方法
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
XML概括
xml 全称是Extensible Markup Langage , 译作“可扩展标记语言”跟JSON一样, 也是常用的一种用于交互的数据格式一般也叫XML文档(XML Document)
GDataXML
要使用GDataXML, 先要对项目进行一些配置。
1>导入libxml2动态
2>由于GDataXml是非ARC的, 因此得设置编译参数
CMD + B 编译通过没有报错说明环境配置成功
GDataXML中常用的类
GDataXMLDocument: 代表整个XML文档
GDataXMLElement: 代表文档中的每个元素
使用attributeForName:方法可以获得属性值