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
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步