zoukankan      html  css  js  c++  java
  • NSXMLParser自定义的一个xml解析工具

    //
    //  DenglXMLParser.h
    //
    
    #import <Foundation/Foundation.h>
    
    @interface DenglXMLParser : NSXMLParser<NSXMLParserDelegate>
    
    @property (nonatomic,strong) NSMutableArray *array;
    
    @end
    //
    //  DenglXMLParser.m
    //
    
    #import "DenglXMLParser.h"
    
    @interface DenglXMLParser ()
    
    @end
    
    @implementation DenglXMLParser
    
    #pragma mark - <NSXMLParserDelegate>
    /**
     * 解析到某个元素的结尾
     */
    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
    {
        //    NSLog(@"didEndElement - %@", elementName);
    }
    
    /**
     * 解析到某个元素的开头
     */
    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
    {
    //    NSLog(@"%@---%@",elementName,attributeDict);
        if ([elementName isEqualToString:@"item"]) {
            [self.array addObject:attributeDict];
        }
    }
    
    /**
     * 开始解析XML文档
     */
    - (void)parserDidStartDocument:(NSXMLParser *)parser
    {
        //    NSLog(@"parserDidStartDocument");
        self.array = [NSMutableArray array];
    }
    
    /**
     * 解析完毕
     */
    - (void)parserDidEndDocument:(NSXMLParser *)parser
    {
        //    NSLog(@"parserDidEndDocument");
    }
    
    
    @end

     还有一种xml解析的工具

    如下是代码:

    #import <Foundation/Foundation.h>
    
    
    @interface XMLParser :NSXMLParser<NSXMLParserDelegate>{
        //存放解析xml时所得到的标题、日期等项目
        NSMutableDictionary *currentItem;    
        //存放解析xml时所得到的文本内容
        NSMutableString *currentContents;    
        //存放解析内容
        NSMutableArray *array;            
    }
    @property (nonatomic,retain) NSMutableString *currentContents;
    @property (nonatomic,retain) NSMutableArray *array;
    @property (nonatomic,retain) NSMutableDictionary *currentItem;
    
    @end
    #import "XMLParser.h"
    
    
    @implementation XMLParser
    
    @synthesize array;
    @synthesize currentItem;
    @synthesize currentContents;
    
    /**
     * 初始设置
     */
    - (void)parserDidStartDocument:(NSXMLParser *)parser {
        NSMutableArray *mytitleList = [[NSMutableArray alloc] initWithCapacity:0];
        self.array = mytitleList;
    
    }
    
    /**
     * 准备读取
     */
    - (void)parser:(NSXMLParser *)parser 
    didStartElement:(NSString *)elementName
      namespaceURI:(NSString *)namespaceURI
     qualifiedName:(NSString *)qualifiedName
        attributes:(NSDictionary *)attributeDict{
        
        if([elementName compare:@"item"] == NSOrderedSame){
            NSMutableDictionary *myCurrentItem = [[NSMutableDictionary alloc] initWithCapacity:0];
            self.currentItem = myCurrentItem;
            
        }else if(currentItem != NULL){
            NSMutableString *myCurrentContents = [[NSMutableString alloc] initWithCapacity:0];
            self.currentContents = myCurrentContents;
        }
    }
    
    /**
     * 读取内容
     */
    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
        
        if(self.currentContents && string)
            [self.currentContents appendString:string];
    }
    
    /**
     * 完成读取
     */
    - (void)parser:(NSXMLParser *)parser
     didEndElement:(NSString *)elementName
      namespaceURI:(NSString *)namespaceURI
     qualifiedName:(NSString *)qName{
        if([elementName compare:@"item"] == NSOrderedSame){
            [self.array addObject:self.currentItem];
        }else if(self.currentItem && self.currentContents){
            [self.currentItem setObject:self.currentContents forKey:elementName];
            self.currentContents = nil;
        }
    }
    
    @end
  • 相关阅读:
    dropload.js 上滑加载,下拉刷新
    jQuery支持图片放大缩小查看效果
    iScroll-5 API 中文版
    多行文字垂直居中
    jQuery延迟加载(懒加载)插件 – jquery.lazyload.js
    js生成中文二维码
    JS中,如何判断一个数是不是小数?如果是小数,如何判断它是几位小数??
    HTML5页面,用JS 禁止弹出手机键盘
    watch和computed的用法区别是什么?
    JS中的call()和apply()
  • 原文地址:https://www.cnblogs.com/iOSDeng/p/5405023.html
Copyright © 2011-2022 走看看