本文共 3872 字,大约阅读时间需要 12 分钟。
原文地址:
// 解析网络文件
- (IBAction)networkXML:(id)sender { NSURL *url = [NSURL URLWithString: @" // 创建请求 NSMutableURLRequest* request = [[NSMutableURLRequest alloc] init]; [request setURL:url]; [request setHTTPMethod:@"GET"]; NSHTTPURLResponse* response; // 调用同步请求得到数据 NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; // 得到XML文本并转码 self.xmlString = [[NSString alloc] initWithData:data encoding: CFStringConvertEncodingT// 解析本地文件
- (IBAction)localXML:(id)sender { // 先将要操作的文件拷贝到Documents目录下 // 得到资源文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"party" ofType:@"xml"]; // 得到Documents路径 NSString *home = [NSHomeDirectory() stringByAppendingPathCom// GDataXML方式解析
- (void)parseGDataXML { textView.text = @""; NSError *error; // 加载XML文件 GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithXMLString: self.xmlString options:0 error:&error]; if (doc == nil) { return; } NSLog(@"LOG=%@", [[NSString alloc] initWithData:doc.XMLData encoding:NSUTF8StringEncoding]); NSMutableString *resultString = [[NSMutableString alloc] initWithString:@"XML数据内容: \n"]; // 解析 // 使用XPath语法 NSArray *partyMembers = [doc.rootElement nodesForXPath:@"//Party/Player" error:nil]; for (GDataXMLElement *partyMember in partyMembers) { NSString *_name; NSString *_level; NSString *_class; // Name NSArray *names = [partyMember elementsForName:@"Name"]; if (names.count > 0) { GDataXMLElement *firstName = (GDataXMLElement *) [names objectAtIndex:0]; _name = firstName.stringValue; } else continue; // Level NSArray *levels = [partyMember elementsForName:@"Level"]; if (levels.count > 0) { GDataXMLElement *firstLevel = (GDataXMLElement *) [levels objectAtIndex:0]; _level = firstLevel.stringValue; } else continue; // Class NSArray *classes = [partyMember elementsForName:@"Class"]; if (classes.count > 0) { GDataXMLElement *firstClass = (GDataXMLElement *) [classes objectAtIndex:0]; _class = firstClass.stringValue; } else continue; [resultString appendFormat:@"Name=%@",_name ]; [resultString appendFormat:@" Level=%@",_level ]; [resultString appendFormat:@" Class=%@\n",_class ]; } textView.text = resultString; }// 写文件
- (IBAction)saveXML:(id)sender { // 创建XML节点 GDataXMLElement * partyElement = [GDataXMLNode elementWithName:@"Party"]; GDataXMLElement * playerElement = [GDataXMLNode elementWithName:@"Player"]; GDataXMLElement * nameElement = [GDataXMLNode elementWithName:@"Name" stringValue:@"zhang"]; GDataXMLElement * levelElement = [GDataXMLNode elementWithName:@"Level" stringValue:@"1"]; GDataXMLElement * classElement = [GDataXMLNode elementWithName:@"Class" stringValue:@"Rogue"]; // 创建XML层次结构 [playerElement addChild:nameElement]; [playerElement addChild:levelElement]; [playerElement addChild:classElement]; [partyElement addChild:playerElement];// 创建XML文件
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithRootElement:partyElement]; NSData *xmlData = document.XMLData; // 得到输出路径 NSString *homePath = [[NSHomeDirectory() stringByAppendingPathComNSLog(@"Saving xml data to %@...", homePath);
// 输出 [xmlData writeToFile:homePath atomically:YES]; }转载地址:http://fneji.baihongyu.com/