Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone TBXML根元素始终为空_Iphone_Xml_Tbxml - Fatal编程技术网

Iphone TBXML根元素始终为空

Iphone TBXML根元素始终为空,iphone,xml,tbxml,Iphone,Xml,Tbxml,我对此完全感到困惑,因为我已经使用TBXML编写了其他几种方法来正确解析XML文件。下面是正在讨论的方法。无论我尝试什么,根元素都将保持null,因此方法的其余部分将失败。如您所见,XML文件位于通过PHP输出的web上。我在另一个应用程序中使用了完全相同的方法,没有任何问题。我已经将XML输出与我以前使用的进行了比较,除了元素之外没有其他区别。这个方法的代码几乎相同,但我肯定遗漏了什么。任何帮助都将不胜感激 - (void)loadFromZenPhoto{ tbxml = [[TBXML a

我对此完全感到困惑,因为我已经使用TBXML编写了其他几种方法来正确解析XML文件。下面是正在讨论的方法。无论我尝试什么,根元素都将保持null,因此方法的其余部分将失败。如您所见,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];
    }           
}
}

这是个棘手的问题。看起来您的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“]编码:nsacienceoding错误:nil])

控制台记录正确的html响应


希望这能有所帮助。

好的,我想你面临的问题和我以前遇到的一样。我想问题在于您通过XCode建议修复了TBXML.m中的语义问题

代码对我来说很好。你能记录XML响应吗?我最终自己解决了这个问题,但这就是问题所在。使用Xcode“修复”TBXML.m中的警告,从而破坏了它。谢谢