【问题标题】:Yahoo! weather in an iphone app雅虎! iPhone应用程序中的天气
【发布时间】:2011-12-08 16:51:32
【问题描述】:

我正在使用 yahoo 天气服务(我有钥匙)开发一个 iphone 应用程序。 我有 2 个问题:

  1. 我可以在我的应用中将其用于商业用途吗(例如在应用商店中免费或不免费发布我的应用)
  2. 为什么 xml 和 json 结果不同: http://weather.yahooapis.com/forecastrss?w=29330057&u=chttp://weather.yahooapis.com/forecastjson?w=29330057&u=c

有什么事情要做吗(第一个有想要的位置)? 谢谢。

【问题讨论】:

    标签: iphone yahoo-weather-api


    【解决方案1】:

    我怀疑这是 XML 命名空间的问题。根据使用的框架和实际的完整 XML,您必须通过它们的名称空间访问元素。您可能想要切换到另一个基于 DOM 的框架(不使用 NSXMLParser),例如 Google 的 GDataXMLNode。在基于 DOM 的框架中,您可以访问树状结构中的各个节点,而不是自己构建一个。

    网上有很多这样的例子,例如Building an RSS readerHow to read and write XML documents with GDataXML。但举个简单的例子:

    NSError *error = nil;
    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error];
    
    if (doc == nil) { return nil; }
    
    NSMutableDictionary *result = [[NSMutableDictionary alloc] init];
    
    NSArray *lists = [doc nodesForXPath:@"/result/list" error:nil];
    if ([lists count] > 0)
    {
        for (GDataXMLNode *list in lists) {
            int listid = [self integerInNode:list forXPath:@"listid"];
            NSString *listname = [self stringInNode:list forXPath:@"name"];
    
            [result setValue:[NSNumber numberWithInt:listid] forKey:listname];   
    
        }     
    }
    [doc release];
    return [result autorelease]; 
    

    【讨论】:

    • 首先感谢您重播,我很抱歉,因为我编辑了帖子,这使得回复与它无关,但我这样做是因为页面中有一个错误,我解释:我写我的问题(但我没有点击“发布您的问题”),但我找到了一个 json liste 的解决方案,所以我删除了我在无法发布之后写的内容,并且我收到一条错误消息:“不在我们的标准中”。再次抱歉。我发布了她的原始帖子:我的问题是 nsxmlparser 无法解析这样的内容
    【解决方案2】:
    1. 是的,雅虎!让您在合理使用政策下使用他们的 API,甚至是商业用途。不要做傻事,给他们足够的道具,例如。带有指向其网站链接的图标或徽标。
    2. 我认为了解两种输出格式为何存在差异并不重要。使用对您来说更好/更容易的东西。我个人更喜欢使用 JSON 和 Apple 的 NSJSONSerialization 类。

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 2012-08-16
      • 2013-02-09
      • 2014-11-20
      • 1970-01-01
      相关资源
      最近更新 更多