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

 

posted @ 2016-04-18 16:47  Nuius  阅读(217)  评论(0编辑  收藏  举报