iOS:处理XML文件
NSXMLParser是标准库类
Book.xml
<?xml version="1.0" encoding="UTF-8"?> <!--Document created by: lishujun, code-style with XmlGrid Online XML Editor, http://xmlgrid.net --> <book> <!-- <summary> <author>金庸</author> <content>sfdgasidfhasdfb</content> </summary> --> <chapters> <chapter name="hello">hello,world</chapter> <chapter name="lishujun"> i'm lishujun sdfsdfs\ aaaasdfsdf qqqqqqqq </chapter> <chapter name="lishujun2">i'm lishujun2</chapter> </chapters> </book>
XmlElement.h
#import <Foundation/Foundation.h> @interface XmlElement : NSObject @property (strong, nonatomic) NSString *elementName; @property (strong, nonatomic) NSString *text; @property (strong, nonatomic) NSDictionary *attributeDict; @end
XmlElement.m
#import "XmlElement.h" @implementation XmlElement @synthesize elementName; @synthesize text; @synthesize attributeDict; @end
BookXmlParser.h
#import <Foundation/Foundation.h> #import "XmlElement.h" @interface BookXMLParser : NSObject <NSXMLParserDelegate> { XmlElement *_element; NSXMLParser *_parser; } -(id)initWithData:(NSData*)data; -(BOOL)parse; @end
BookXmlParser.m
#import "BookXMLParser.h" #import "XmlElement.h" @implementation BookXMLParser -(id)initWithData:(NSData*)data { if (self) { _parser = [[NSXMLParser alloc]initWithData:data]; _parser.delegate = self; } return self; } -(BOOL)parse { _element = nil; return [_parser parse]; } -(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { [self processElement]; _element = [[XmlElement alloc]init]; _element.elementName = elementName; _element.attributeDict = attributeDict; _element.text = @""; } -(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { if ([_element.text isEqualToString:@""]) { _element.text = string; //NSLog(@"Now element is %@", _element.text); } } -(void) processElement { if (_element == nil) { return; } NSLog(@"process:"); NSLog(@"%@, %@", _element.elementName, _element.text); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2013-10-09 防御式编程