Не могу найти элементв документе XML - PullRequest
0 голосов
/ 17 июня 2011

Я анализирую этот документ: http://greenmoss.dk/recipe01.xml и прохожу каждый элемент и сохраняю данные.Но я не могу найти этот элемент:

ingList id = "1"

Я пробовал это:

        //--------ING-List--------

else if ([elementName isEqualToString:@"ingList id=\"1\""])
{
    NSLog(@"ING-LIST HERE!!!!", nil);
}

ипопробовал это:

//--------ING-List--------

else if ([elementName isEqualToString:@"ingList"])
{
    NSLog(@"INGLIST HERE!!!!", nil);
}

Как мне найти этот элемент?

1 Ответ

0 голосов
/ 17 июня 2011

Имеет смысл, что первый потерпит неудачу, а второй - удастся.In:

<ingList id="1"> ... </ingList>

Имя элемента - «ingList».Этот элемент также имеет один атрибут;имя этого атрибута равно «id», а его значение равно «1».

Поскольку имя элемента просто «ingList», [elementName isEqualToString:@"ingList"] будет выполнено успешно, но [elementName isEqualToString:@"ingList id=\"1\"] завершится ошибкой, поскольку id = «1»не является частью имени элемента.

Чтобы заставить это работать, вы должны сначала проверить, является ли имя элемента «ingList» (что вы уже можете сделать).Если это так, вам придется получить атрибуты из этого элемента, определить, имеет ли один из них имя «id», и имеет ли значение этого атрибута «1».

else if ([elementName isEqualToString:@"ingList"])
{
    // Find attribute "id"
    // Determine if value of "id" is "1"
    if (...) {
        // Do what you need to do.
    }
}

К сожалению, яЯ не знаю, какой язык вы используете или какая библиотека XML используется, поэтому я не могу заполнить детали определения значений атрибутов.

Редактировать: Оглядываясь вокруг, он выглядиткак будто ваш внутренний тест может быть чем-то вроде следующего, но, как я уже сказал, у меня нет опыта с этим, поэтому код может быть неправильным.

else if ([elementName isEqualToString:@"ingList"])
{
    // Find value of attribute "id"
    NSString *id = [NSString stringWithFormat:@"%@", [attributeDict objectForKey:@"id"]];        
    // Determine if value of "id" is "1"
    if ([id isEqualToString:@"1"]) {
        // Do what you need to do.
    }
}
...