Iphone 如何通过xml解析器解析xml的子节点值?

Iphone 如何通过xml解析器解析xml的子节点值?,iphone,objective-c,xml,xml-parsing,Iphone,Objective C,Xml,Xml Parsing,我有一个xml文件: 这里,, 编译器读取父节点值,即“boiled”和“rosted”,但不读取智利节点值,即“boiling1recipe”、“boiling2recipe”、“roasted1recipe”和“roasted2recipe”。 可能是什么问题,意味着我做错了什么? 请指导我,因为这是我第一次进行解析。为什么不改为使用XPath查询?这将更容易,并且您可以解析循环中的每一项。 我没有在您的XML上尝试此代码,但它应该可以工作: DDXMLNode *node = [

我有一个xml文件:

这里,, 编译器读取父节点值,即“boiled”和“rosted”,但不读取智利节点值,即“boiling1recipe”、“boiling2recipe”、“roasted1recipe”和“roasted2recipe”。 可能是什么问题,意味着我做错了什么?
请指导我,因为这是我第一次进行解析。

为什么不改为使用XPath查询?这将更容易,并且您可以解析循环中的每一项。 我没有在您的XML上尝试此代码,但它应该可以工作:

    DDXMLNode *node = [item attributeForName:@"value"];

    if ([[node stringValue] isEqual:@"boiled"]) {
        [listOfBoiledItems addObject:model];

        DDXMLNode *node1 = [item attributeForName:@"value"];

        if ([[node1 stringValue] isEqual:@"boiling1recipe"]) {
            [listOfRecipies1 addObject:model];
        }
        else if ([[node1 stringValue] isEqual:@"boiling2recipe"]) { 
            [listOfRecipies2 addObject:model];
        }
     }
            else if ([[node stringValue] isEqual:@"rosted"]) {  
        [listOfRostedItems addObject:model];

        DDXMLNode *node1 = [item attributeForName:@"value"];

        if ([[node1 stringValue] isEqual:@"roasted1recipe"]) {  
            [listOfRecipies6 addObject:model];
        }
        else if ([[node1 stringValue] isEqual:@"roasted2recipe"]) {
            [listOfRecipies7 addObject:model];
        }
    }

希望它能解决您的问题。

需要释放字符串吗?
    DDXMLNode *node = [item attributeForName:@"value"];

    if ([[node stringValue] isEqual:@"boiled"]) {
        [listOfBoiledItems addObject:model];

        DDXMLNode *node1 = [item attributeForName:@"value"];

        if ([[node1 stringValue] isEqual:@"boiling1recipe"]) {
            [listOfRecipies1 addObject:model];
        }
        else if ([[node1 stringValue] isEqual:@"boiling2recipe"]) { 
            [listOfRecipies2 addObject:model];
        }
     }
            else if ([[node stringValue] isEqual:@"rosted"]) {  
        [listOfRostedItems addObject:model];

        DDXMLNode *node1 = [item attributeForName:@"value"];

        if ([[node1 stringValue] isEqual:@"roasted1recipe"]) {  
            [listOfRecipies6 addObject:model];
        }
        else if ([[node1 stringValue] isEqual:@"roasted2recipe"]) {
            [listOfRecipies7 addObject:model];
        }
    }
NSError *error;
NSArray *xmlItems = [ddDoc nodesForXPath:@"//item" error:&error]; // where ddDoc is your DDXMLDocument

for(DDXMLElement* itemElement in xmlItems)
{
    // Here you get the item->value attribute value as string...
    NSString *itemValueAsString = [[itemElement attributeForName:@"value"]stringValue];

    // Now you get the image element from inside the item element
    DDXMLElement *imageElement = [[itemElement nodesForXPath:@"image" error:&error] objectAtIndex:0];

    // And finally the image->value attribute value as string…
    NSString *imageValueAsString = [[imageElement attributeForName:@"value"]stringValue];
}