2011-12-08 16 views
1

私はヤフーの天気予報サービスを使用してiphoneアプリを開発しています(私はキーがあります)。 私が持っている2質問:Yahoo!天気のiPhoneアプリ

  1. iが(無料またはなしのためAppStoreで私のアプリを掲示するように)商業的使用のために私のアプリでそれを使用することができます
  2. XMLとJSONの結果が異なっている理由: http://weather.yahooapis.com/forecastrss?w=29330057&u=chttp://weather.yahooapis.com/forecastjson?w=29330057&u=c

多くのことには何かあります(最初に希望の場所があります)。 ありがとうございます。

答えて

1

これはXMLネームスペースの問題と思われます。使用されるフレームワークと実際の完全なXMLに応じて、名前空間で要素にアクセスする必要があります。 Googleが別のDOMベースのフレームワーク(NSXMLParserを使用しない)に切り替えることができます(例:GDataXMLNode)。 DOMベースのフレームワークでは、独自のものを構築するのではなく、ツリー状の構造で個々のノードにアクセスすることができます。

ネット上には、例としてBuilding an RSS readerまたはHow 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]; 
+0

私は投稿を編集しているため、返事をしてくれてありがとうございます。それは関連するものではありませんが、ページにバグがありますので、私はそれを行います。しかし、私は "あなたの質問を投稿"しないでください)しかし、私はjson listeを持っている解決策を見つけるので、私はポストすることは不可能な後に私が書いたものを削除し、私はエラーメッセージを言う: "私たちのstandarではない"。またすみません。私は元の投稿を投稿します:私の質問は、nsxmlparser cantはこのようなものをパースできないということでした。

0
  1. はい、ヤフーを商用でも公正使用ポリシーの下でAPIを使用できるようにします。お尻ではなく、彼らに十分な小道具を与えてください。自分のウェブサイトへのリンクを持つアイコンやロゴ
  2. 両方の出力形式に違いがあるのはなぜか分かりません。より良く/より簡単なものを使用してください。個人的に私はJSONとAppleのNSJSONSerializationクラスを使用する方が好きです。