首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TBXML根元素始终为空

TBXML根元素始终为空
EN

Stack Overflow用户
提问于 2012-01-06 03:12:27
回答 2查看 816关注 0票数 0

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

代码语言:javascript
复制
- (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];
    }           
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-12 05:28:15

好的,我想你正面临着和我以前一样的问题。我猜问题是您通过XCode建议修复了TBXML.m中的语义问题。Please this answer for more info.

票数 0
EN

Stack Overflow用户

发布于 2012-01-06 04:52:32

好吧,这是一个棘手的问题。看起来您的web服务返回的是ASCII编码的html。而TBXML要求的是UTF8编码。

尝试使用以下命令进行检查

代码语言:javascript
复制
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响应。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8748331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档