使用GDataXML获取XML响应值
在HTTP Post之后我检索xml响应,如下所示:
admin 0 0 0 1
我想提取用户ID,但我不知道如何做到这一点。 我尝试使用GDataXML
Parser,因为它已经集成在我的项目中,但我不知道如何在html标记内获取值。
我希望你能帮助我。 如果XMLParser
没有解决方案,您会推荐正则表达式吗? 在这种情况下,我将欣赏正则表达式的解决方案,我不是很擅长:)
提前致谢。
这是我用来检索用户属性的代码。 有用。
NSString* path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"xml"]; NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:path]; NSError *error; GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error]; NSArray *userElements = [doc.rootElement elementsForName:@"user"]; for (GDataXMLElement *userEl in userElements) { // Attribute NSString *attribute = [(GDataXMLElement *) [userEl attributeForName:@"id"] stringValue]; NSLog(@"attribute for user is %@", attribute); // Name NSArray *names = [userEl elementsForName:@"name"]; if (names.count > 0) { GDataXMLElement *name = (GDataXMLElement *) [names objectAtIndex:0]; NSLog(@"name for user is %@", name.stringValue); } // Rank NSArray *ranks = [userEl elementsForName:@"rank"]; if (ranks.count > 0) { GDataXMLElement *rank = (GDataXMLElement *) [ranks objectAtIndex:0]; NSLog(@"rank for user is %@", rank.stringValue); } // Do the same for other tags... } [doc release]; [xmlData release];
文件test.xml与从xml响应中检索的文件相同。 因此,您需要更改此代码段的第二行。 也许你可以调用类NSData
initWithData
方法。
您可以将此代码放在所需的位置。 也许你可以创建一个其他类作为集中式解析器。 希望能帮助到你
编辑
将这两行放在前面进行说明。
NSString *valAttribute = [(GDataXMLElement *) [doc.rootElement attributeForName:@"value"] stringValue]; NSLog(@"value attribute for result is %@", valAttribute);
解释很简单。 使用doc.rootElement
您可以从
到检索整个xml文档