TBXML根元素始终为null

时间:2012-01-05 19:12:27

标签: iphone xml tbxml

我对此感到困惑,因为我使用TBXML编写了几个其他方法来正确解析XML文件。以下是有问题的方法。无论我尝试什么,根元素都保持为null,因此方法的其余部分失败。如您所见,XML文件位于通过PHP输出的Web上。我在另一个应用程序中使用了这个完全相同的方法,没有任何问题。我已经将XML输出与之前使用的XML输出进行了比较,并且除了元素之外没有看到任何差异。这种方法的代码几乎完全相同,但我必须遗漏一些东西。任何帮助将不胜感激。

- (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];
    }           
}
}

2 个答案:

答案 0 :(得分:0)

这是一个棘手的问题。看起来您的Web服务正在返回ASCII编码的html。而TBXML需要UTF8编码。

尝试使用此

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

它以[{1}}身份登录到控制台,但如果您使用stringLoad: (null)

控制台记录正确的html响应。

希望这有帮助。

答案 1 :(得分:0)

好的,我认为你面临着我之前遇到的同样问题。我想问题是你通过XCode建议解决了TBXML.m中的语义问题。 Please this answer for more info.