• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 使用 GDataXML 获取 XML 响应值

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:49:09 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在 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 Parser,因为它已经集成在我的项目中,但是 我不知道如何在 html 标签中获取值。

我希望你能帮助我。如果 XMLParser 没有解决方案,你会推荐正则表达式吗?在这种情况下,我会很感激正则表达式的解决方案,我不太擅长这个

提前致谢。



Best Answer-推荐答案


这是我用来检索用户属性的代码。它有效。

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 文档,从

关于ios - 使用 GDataXML 获取 XML 响应值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8741698/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap