2012-01-05 4 views
0

私はTBXMLを使用していくつかの他のメソッドをコーディングしてXMLファイルを適切に解析しているので、私は完全に困惑しています。以下は問題の方法です。私が何を試しても、ルート要素はnullのままなので、残りのメソッドは失敗します。ご覧のとおり、XMLファイルはPHP経由で出力されるWeb上にあります。私はこの全く同じ方法を別のアプリケーションで使っていますが、何の問題もありません。私はXML出力を以前使用したものと比較して、要素以外の違いは見ないようにしました。このメソッドのコードはほぼ同じですが、私は何かが欠落しているに違いありません。どんな助けでも大歓迎です。TBXMLルート要素常にnull

- (void)loadFromZenPhoto{ 
tbxml = [[TBXML alloc] initWithURL:[NSURL URLWithString:@"http://www.flpublicarchaeology.org/civilwar/generatexml.php"]];  

// Obtain root element 
TBXMLElement *root = tbxml.rootXMLElement; 

// if root element is valid 
if (root) { 
    TBXMLElement *site = [TBXML childElementNamed:@"site" parentElement:root]; 

    // if a site element was found, create site object 
    while (site != nil) { 

     Site *aSite = [[Site alloc] init]; 

     TBXMLElement *siteid = [TBXML childElementNamed:@"id" parentElement:site]; 
     if (siteid != nil) 
      aSite.siteid = [[TBXML textForElement:siteid] intValue]; 

     TBXMLElement *parentid = [TBXML childElementNamed:@"parentid" parentElement:site]; 
     if (parentid != nil) 
      aSite.parentid = [[TBXML textForElement:parentid] intValue]; 

     TBXMLElement *folder = [TBXML childElementNamed:@"folder" parentElement:site]; 
     if (folder != nil) 
      aSite.folder = [TBXML textForElement:folder]; 

     TBXMLElement *title = [TBXML childElementNamed:@"title" parentElement:site]; 
     if (title != nil) 
      aSite.title = [TBXML textForElement:title];   


     // add site object to the sites array 
     [sites addObject:aSite]; 

     //advance to next sibling 
     site = [TBXML nextSiblingNamed:@"site" searchFromElement:site]; 
    }   
} 
} 
+0

コードは私によく見えます。あなたはXML応答をNSLogできますか? – AAV

答えて

0

あなたは以前と同じ問題に直面していると思います。私は、問題は、あなたがXcodeの提案によってTBXML.mのセマンティック問題を修正したことだと思います。 Please this answer for more info.

+0

私は結局自分自身でこれを理解することになったが、これが問題だった。 Xcodeを使用して、破損したTBXML.mの警告を「修正」します。ありがとう! – jasontk19

0

これは厄介なものでした。あなたのWebサービスがASCIIでエンコードされたHTMLを返すようです。 TBXMLではUTF8エンコーディングが必要です。

それはstringLoad: (null)としてコンソールにログインします。この

NSLog(@"stringLoad: %@", [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.flpublicarchaeology.org/civilwar/generatexml.php"] encoding:NSUTF8StringEncoding error:nil]); 

でチェックしてみてください、しかし、あなたがNSLog(@"stringLoad: %@", [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.flpublicarchaeology.org/civilwar/generatexml.php"] encoding:NSASCIIEncoding error:nil]);

を使用した場合、コンソールには正しいHTML応答を記録します。

これが役に立ちます。

関連する問題