• iOS XML 系统自带的解析方法


    XML 文档解析 使用的五个代理方法
    1.
    文档解析开始 parserDidStartDocument:
    2.文档解析结束 parserDidEndDocument:
    3.文档 解析元素 开始 didStartElement:
    4.文档 解析元素 结束 didEndElement:
    5.解析 文档元素 的内容 parser foundCharacters:

    #import
    <UIKit/UIKit.h> @interface ViewController : UIViewController<NSXMLParserDelegate> /** * 全局的集合 用来添加字典的 */ @property(strong,nonatomic) NSMutableArray *arr; /** * 显示对应的 元素名称和value值 */ @property(strong,nonatomic) NSMutableDictionary *dic; /** * 表面上是 str 实际上是 字典中的value值 */ @property(strong,nonatomic) NSString *str; @end #import "ViewController.h" @interface ViewController () @end @implementation ViewController //系统自带 XML文件解析 - (void)viewDidLoad { [super viewDidLoad]; //指定 xml 文件 NSString *path=[[NSBundle mainBundle] pathForResource:@"person" ofType:@"xml"]; //转化成 data 对象 NSData *data=[NSData dataWithContentsOfFile:path]; //为parser 指定初始值 NSXMLParser *parser=[[NSXMLParser alloc] initWithData:data]; parser.delegate=self; BOOL bol=[parser parse]; //返回解析的结果 NSLog(@"bol is %d",bol); } /** * 代理使用的五个方法 * */ /** * 文档解析开始 StartDocument * * @param parser */ -(void)parserDidStartDocument:(NSXMLParser *)parser { //初始化 self.arr=[NSMutableArray array]; } /** * 文档解析结束 EndDocument * * @param parser */ -(void)parserDidEndDocument:(NSXMLParser *)parser { //输出集合的内容 NSLog(@"%@",self.arr); } /** * 文档 解析元素 开始 StartElement * * @param parser 解析的对象 * @param elementName 元素的名称 * @param namespaceURI 命名空间 * @param qName 查的描述信息 * @param attributeDict 属性的字典 */ -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict { //找到文档中User元素 开始初始化字典 dic if ([elementName isEqualToString:@"User"]) { //向字典中添加属性元素 self.dic=[NSMutableDictionary dictionary]; [self.dic setDictionary:attributeDict]; }} /** * 文档 解析元素 结束 EndElement * * @param parser 解析的对象 * @param elementName 元素的名称 * @param namespaceURI 命名空间 * @param qName 查的描述信息 * @param attributeDict 属性的字典 */ -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { //判断元素的关键字 只有符合 name或age 的时候才向字典中添加元素 if ([elementName isEqualToString:@"name"]||[elementName isEqualToString:@"age"]) { //dic中已经包含了 3 个键值对 [self.dic setObject:self.str forKey:elementName]; } //直到找到 User 元素标签时 才向arr中添加字典 即dic else if([elementName isEqualToString:@"User"]) { [self.arr addObject:self.dic]; } } /** * 解析 文件元素 的内容 foundCharacters * * @param parser 解析对象 * @param string 显示的文本内容 */ -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { //将局部的字符串赋值给 str self.str=string; } @end
  • 相关阅读:
    Django连接MySQL(二)
    Django框架,python2和python3共存的情况下,创建Django项目
    pycharm破解
    dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)
    Spring中的事物管理,基于spring的bean的配置
    Spring中的事物管理,用 @Transactional 注解声明式地管理事务
    Ajax中GET和POST的区别
    Spring对 JDBC 的支持,JdbcTemplate类的使用
    Spring AOP:面向切面编程,AspectJ,是基于spring 的xml文件的方法
    Spring AOP:面向切面编程,AspectJ,是基于注解的方法
  • 原文地址:https://www.cnblogs.com/tmf-4838/p/5330492.html
Copyright © 2020-2023  润新知