iPhone HTTP获得XML并使用GDataXML解析

本文介绍了一种使用Objective-C从远程服务器下载XML文件并解析其中特定元素的方法。通过NSURLConnection同步发送请求获取XML数据,利用GDataXMLDocument解析XML字符串,并通过XPath查询获取Player节点及其子节点的数据。

NSURL *url = [NSURL URLWithString:

 @"http://www.raywenderlich.com/downloads/Party.xml"];

 

NSMutableURLRequest* request =[NSMutableURLRequest new];   

[request setURL:url];   

[request setHTTPMethod:@"GET"]; 

 

NSHTTPURLResponse* response;   

NSData* data = [NSURLConnection sendSynchronousRequest:request   

returningResponse:&response 

error:nil];  

 

NSString* responseXMLResult =[[NSString alloc] initWithData:data 

encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)];   

 

 

 

NSError *error;

GDataXMLDocument *doc =[[GDataXMLDocument alloc] initWithXMLString: responseXMLResult

  options:0 error:&error];

   

 

if (doc == nil) { return; }

 

NSLog(@"LOG=%@",[[NSStringalloc] initWithData:doc.XMLData encoding:NSUTF8StringEncoding]);

//NSLog(@"%@", doc.rootElement.XMLString);

 

NSMutableString *resultString =[[NSMutableString alloc]initWithString:@"XML数据内容:n"];

 

//NSArray *partyMembers = [doc.rootElementelementsForName:@"Player"];

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"];

NSArray *names = [partyMembernodesForXPath:@"Name" error:nil];

if (names.count > 0) {

GDataXMLElement *firstName =(GDataXMLElement *) [namesobjectAtIndex:0];

_name = firstName.XMLString;

} else continue;

 

// Level

NSArray *levels = [partyMemberelementsForName:@"Level"];

if (levels.count > 0) {

GDataXMLElement *firstLevel =(GDataXMLElement *) [levelsobjectAtIndex:0];

_level = firstLevel.stringValue;

} else continue;

 

// Class

NSArray *classes = [partyMemberelementsForName:@"Class"];

if (classes.count > 0) {

GDataXMLElement *firstClass =(GDataXMLElement *) [classesobjectAtIndex:0];

_class = firstClass.stringValue;

 

} else continue;

 

[resultString appendFormat:@"Name=%@",_name ];

[resultString appendFormat:@" Level=%@",_level ];

[resultString appendFormat:@" Class=%@n",_class ];

 

 

}

 

 

//textView.text = [[NSString alloc] initWithData:doc.XMLDataencoding:NSUTF8StringEncoding];

textView.text = resultString;

    [urlrelease];

[docrelease];#SinaEditor_Temp_FontName


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值