解析XML文件示例.
代码1和代码2是IOS开发的基本内容。
代码1.
#import@class XmlTestViewController;@interface XmlTestAppDelegate : NSObject { UIWindow *window; XmlTestViewController *viewController;}@property (nonatomic, retain) IBOutlet UIWindow *window;@property (nonatomic, retain) IBOutlet XmlTestViewController *viewController;@end
代码2
1 #import "XmlTestAppDelegate.h" 2 #import "XmlTestViewController.h" 3 @implementation XmlTestAppDelegate 4 @synthesize window; 5 @synthesize viewController; 6 #pragma mark - 7 #pragma mark Application lifecycle 8 - (BOOL)application:(UIApplication *)application 9 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 10 [window addSubview:viewController.view]; 11 [window makeKeyAndVisible]; 12 return YES; 13 } 14 - (void)applicationWillResignActive:(UIApplication *)application {} 15 - (void)applicationDidEnterBackground:(UIApplication *)application {} 16 - (void)applicationWillEnterForeground:(UIApplication *)application {} 17 - (void)applicationDidBecomeActive:(UIApplication *)application {} 18 - (void)applicationWillTerminate:(UIApplication *)application {} 19 - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {} 20 - (void)dealloc { 21 [viewController release]; 22 [window release]; 23 [super dealloc]; 24 } 25 @end
代码3是controller的头文件。
代码3
#import@interface XmlTestViewController : UIViewController {}@end
controller的实现文件。在这声明了一个xml格式,NSString类型的字符串。并用代码5和代码6定义的类解析。
代码4
#import "XmlTestViewController.h" #import "FirstXmlParse.h" @implementation XmlTestViewController // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; NSString *xml=@"" " "; FirstXmlParse *first=[[FirstXmlParse alloc] init]; [first startParse:xml]; NSLog(@"title:%@",first.title); NSLog(@"content:%@",first.content); NSLog(@"time:%@",first.time); } /* // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } */ - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } - (void)viewDidUnload { // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)dealloc { [super dealloc]; } @end标题 " "内容描述 " " " "
代码5
#import@interface FirstXmlParse : NSObject { NSString *title; NSString *content; NSString *time; //定义一个可变字符串 NSMutableString *contentString;}@property(nonatomic,retain)NSString *title;@property(nonatomic,retain)NSString *content;@property(nonatomic,retain)NSString *time;@property(nonatomic,retain)NSMutableString *contentString;-(void)startParse:(NSString *)xml;@end
代码6.这是解析xml文件的关键内容。
#import "FirstXmlParse.h" @implementation FirstXmlParse @synthesize title; @synthesize content; @synthesize time; @synthesize contentString; -(void)startParse:(NSString *)xml{ NSData *data=[xml dataUsingEncoding:NSUTF8StringEncoding]; //创建xml解析器 NSXMLParser *xmlParse=[[NSXMLParser alloc] initWithData:data]; //设置委托 [xmlParse setDelegate:self]; [xmlParse parse]; } //解析文档开始 - (void)parserDidStartDocument:(NSXMLParser *)parser{ NSLog(@"解析文档开始"); } - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ NSLog(@"遇到启始标签:%@",elementName); self.contentString=[NSMutableString string]; } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ NSLog(@"遇到内容:%@",string); [self.contentString appendString:string]; } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ NSLog(@"遇到结束标签:%@",elementName); if ([elementName isEqualToString:@"title"]) { title=contentString; } if ([elementName isEqualToString:@"content"]) { content=contentString; } if ([elementName isEqualToString:@"time"]) { time=contentString; } } //解析文档结束 - (void)parserDidEndDocument:(NSXMLParser *)parser{ NSLog(@"文档解析结束"); } @end