0

我对此完全感到困惑,因为我已经使用 TBXML 编写了其他几种方法来正确解析 XML 文件。以下是有问题的方法。无论我尝试什么,根元素都保持为空,因此该方法的其余部分将失败。如您所见,XML 文件位于通过 PHP 输出的 Web 上。我在另一个应用程序中使用了完全相同的方法,没有任何问题。我已经将 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];
    }           
}
}
4

2 回答 2

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 响应。

希望这可以帮助。

于 2012-01-05T20:52:31.890 回答
0

好的,我认为您面临与我以前相同的问题。我想问题是您通过 XCode 建议修复了 TBXML.m 中的语义问题。请这个答案了解更多信息。

于 2012-01-11T21:28:14.523 回答