XML系统自带解析

作者: zhangyunjiang | 来源:发表于2016-03-28 21:40 被阅读110次

    调用系统解析

    必须遵循NSXMLParserDelegate协议

    1.- (void)viewDidLoad
    {    [super viewDidLoad];
    //指定xml文件
    NSString *path=[[NSBundle mainBundle] pathForResource:@"person.xml" ofType:nil];
    //转化为二进制对象
    NSData *data=[NSData dataWithContentsOfFile:path];
    //为person指定初始值
    NSXMLParser *parson=[[NSXMLParser alloc]initWithData:data];
    //指定代理
    parson.delegate=self;
    //解析
    BOOL b=[parson parse];
    if (b) {
            NSLog(@"解析成功");
    }
    

    }

    开始解析

    -(void)parserDidStartDocument:(NSXMLParser *)parser{
    self.arr=[NSMutableArray array];}
    

    解析结束

    -(void)parserDidEndDocument:(NSXMLParser *)parser{
     NSLog(@"%@",self.arr);
     }
    

    解析过程

    当文件遇到User元素时,创建一个字典用于接收

     /***  文档元素解析开始 (当文件遇到User元素时,创建一个字典用于接收)
      *  @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元素时,初始化字典
    if ([elementName isEqualToString:@"User"]) {
        self.dicM=[NSMutableDictionary dictionary];
        //添加字典元素
        [self.dicM setDictionary:attributeDict];
    }}
    

    将符合关键字的元素d添加到字典中

     /***  解析文件元素的内容
     *  @param parser       解析对象 
     *  @param elementName  文档里元素名称
     *  @param namespaceURI 命名空间 
     *  @param qName 
     */
     -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    判断元素的关键字,只有符合的才将元素添加到字典
    if ([elementName isEqualToString:@"name"]) {
        [self.dicM setObject:self.str forKey:elementName];
    }    else if ([elementName isEqualToString:@"age"])
    {        [self.dicM setObject:self.str forKey:elementName];
    } 
     只有见到User才将字典添加到集合
    else if ([elementName isEqualToString:@"User"])
    {        [self.arr addObject:self.dicM];
    }}
    

    得到数据关键字的值

    /** *  解析文件元素的内容
     * *  @param parser 解析对象
     *  @param string 显示的文件的内容
     */
     -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
         self.str=string;
     }

    相关文章

      网友评论

        本文标题:XML系统自带解析

        本文链接:https://www.haomeiwen.com/subject/dfajlttx.html