在 HTTP Post 之后,我检索如下 xml 响应:
<result value="OK">
<user id="1">
<name>admin</name>
<rank>0</rank>
<picture_count>0</picture_count>
<comment_count>0</comment_count>
<has_profile>1</has_profile>
</user>
</result>
我想提取用户 ID,但我不知道该怎么做。
我尝试过GDataXML
解析器,因为这已经集成在我的项目中,但是
我不知道如何获取 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 响应中检索到的文件相同。所以你需要更改这段代码的第二行。也许你可以打电话initWithData
类的方法NSData
.
您可以将此代码放在您想要的位置。也许您可以创建另一个类作为集中式解析器。希望能帮助到你
EDIT
将这两行放在前面以供说明。
NSString *valAttribute = [(GDataXMLElement *) [doc.rootElement attributeForName:@"value"] stringValue];
NSLog(@"value attribute for result is %@", valAttribute);
解释很简单。和doc.rootElement
您检索整个 xml 文档,来自<result>
to </result>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)