Корневой элемент TBXML всегда нулевой - PullRequest
0 голосов
/ 05 января 2012

Я полностью сбит с толку этим, поскольку я кодировал несколько других методов, используя TBXML для правильного анализа XML-файла. Ниже приведен метод. Корневой элемент остается нулевым независимо от того, что я пытаюсь, поэтому остальная часть метода завершается ошибкой. Как видите, файл XML находится в сети и выводится через PHP. Я использовал этот же метод в другом приложении без каких-либо проблем. Я сравнил вывод 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 голосов
/ 12 января 2012

Хорошо, я думаю, что вы столкнулись с той же проблемой, что и я. Думаю, проблема в том, что вы исправили семантические проблемы в TBXML.m с помощью предложений XCode. Пожалуйста, ответьте для получения дополнительной информации.

0 голосов
/ 06 января 2012

Ну, это было сложно. Похоже, ваш веб-сервис возвращает кодировку ASCII. Принимая во внимание, что 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.

Надеюсь, это поможет.

...