Извлечение информации. из XML в какао - PullRequest
0 голосов
/ 18 сентября 2010

Я пытаюсь проанализировать XML для извлечения значений определенных переменных.Вот пример:

<?xml version='1.0'?>
  <Main xmlns='http://www.abc.uk' version='1.0' name='full'>
    <child1 version='2.0'>
    <value1> xyz </value1>
    <userinfo>
       <name> joe </name>
       <pass> joepass </pass>
   </userinfo>
    </child1>
</Root>

Вопрос: Как извлечь значение «xyz» для отображения?Как мне извлечь 'joe' и 'joepass' для отображения?

Насколько я понимаю, child1 - это корень с атрибутом 'version'.'value1' и 'userinfo' оба являются элементами.В Какао, как бы я отобразил эти значения?Я могу сделать [child elementsForName: @ "userinfo", и он отображает все значения.Мне нужно специально извлечь «Джо» и «Джоэп».Спасибо.

1 Ответ

2 голосов
/ 18 сентября 2010

Как извлечь значение 'xyz' в дисплей? Как извлечь «Джо» и 'joepass' для отображения?

С чем-то вроде этого. Это предполагает, что у вас есть XML в NSString:

NSXMLDocument* xmlDoc;
NSError* error = nil;
NSUInteger options = NSXMLNodePreserveWhitespace|NSXMLDocumentTidyXML;
xmlDoc = [[NSXMLDocument alloc] initWithXMLString:xmlString
                                          options:options
                                            error:&error];
if (!error)
{
    NSArray* value1Nodes = [xmlDoc nodesForXPath:@".//Main/value1" error:&error];
    if (!error)
    {
        NSXMLNode* value1node = [value1Nodes objectAtIndex:0];
        NSString* value1 = [value1node stringValue];
        // .. do something with value1
    }

    NSArray* userInfoNodes = [xmlDoc nodesForXPath:@".//Main/userinfo" error:&error];
    if (!error)
    {
        for (NSXMLNode* userInfoNode in userInfoNodes)
        {
            NSXMLNode* nameNode = [[userInfoNode nodesForXPath:@"./name" error:&error] objectAtIndex:0];
            NSXMLNode* passNode = [[userInfoNode nodesForXPath:@"./pass" error:&error] objectAtIndex:0];
            NSString* name = [nameNode stringValue];
            NSString* pass = [passNode stringValue];
            // .. do something with name and pass
    }
}

Подробнее см. В Руководстве по программированию на основе дерева XML от Apple.

Насколько я понимаю, child1 - это корень с атрибутом «версия». 'value1' и 'userinfo' оба элементы.

Main является корневым узлом в этом документе XML, а не child1.

...