2012-01-05 37 views
0

由於我使用TBXML編碼了幾種其他方法來正確解析XML文件,我完全被這個問題困惑不解。下面是有問題的方法。無論我嘗試什麼,根元素都保持爲空,因此該方法的其餘部分會失敗。如您所見,XML文件位於通過PHP輸出的Web上。我已經在另一個應用程序中使用完全相同的方法,無需任何麻煩。我將XML輸出與我以前使用過的內容進行了比較,除了元素外,沒有其他區別。這個方法的代碼幾乎是一樣的,但我必須錯過一些東西。任何幫助將不勝感激。TBXML根元素始終爲空

- (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

代碼看起來不錯。你可以NSLog XML響應? – AAV 2012-01-05 19:32:44

回答

0

好的,我認爲你面臨着和以前一樣的問題。我想這個問題是你通過XCode建議修復了TBXML.m中的語義問題。 Please this answer for more info.

+0

我最終以自己的想法解決了這個問題,但這是問題所在。使用Xcode來「修復」TBXML.m中的警告,從而破壞了它。謝謝! – jasontk19 2012-04-11 14:10:56

0

那麼這是一個棘手的問題。它看起來像您的Web服務正在返回ASCII編碼的HTML。而TBXML需要UTF8編碼。

嘗試用這種

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

它記錄到控制檯stringLoad: (null)檢查,但如果你使用NSLog(@"stringLoad: %@", [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.flpublicarchaeology.org/civilwar/generatexml.php"] encoding:NSASCIIEncoding error:nil]);

控制檯登錄正確的HTML響應。

希望這會有所幫助。