Arc*_*sia 2 xml iphone objective-c xml-parsing
我有这个xml文件:
<Menu>
<item value="boiled">
<image value="boiling1recipe">boiling1.jpg</image>
<recipeImage>png1.png</recipeImage>
<recipeImage>png2.png</recipeImage>
<recipeImage>png3.png</recipeImage>
<recipeImage>png4.png</recipeImage>
</item>
<item value="boiled">
<image value="boiling2recipe">boiling2.jpeg</image>
<recipeImage>png5.png</recipeImage>
<recipeImage>png6.png</recipeImage>
<recipeImage>png7.png</recipeImage>
<recipeImage>png8.png</recipeImage>
</item>
<item value="rosted">
<image value="roasted1recipe">roasted1.jpeg</image>
<recipeImage>png8.png</recipeImage>
<recipeImage>png9.png</recipeImage>
<recipeImage>png10.png</recipeImage>
<recipeImage>png11.png</recipeImage>
</item>
<item value="rosted">
<image value="roasted2recipe">roasted2.jpeg</image>
<recipeImage>png12.png</recipeImage>
<recipeImage>png13.png</recipeImage>
<recipeImage>png1.png</recipeImage>
<recipeImage>png2.png</recipeImage>
</item>
</Menu>
Run Code Online (Sandbox Code Playgroud)
现在,我正在解析它:
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];
}
}
Run Code Online (Sandbox Code Playgroud)
这里,编译器读取父节点值即"煮沸"和"已发布"但不读取智利节点值即"沸腾1","沸腾1","烤1条"和"烤2条".可能是什么问题,意味着我做错了什么?请指导我作为我第一次进行解析.
为什么不使用XPath查询呢?这会更容易,您可以解析循环中的每个项目.我没有在您的XML上尝试此代码,但它应该工作:
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];
}
Run Code Online (Sandbox Code Playgroud)
希望它能解决你的问题.
| 归档时间: |
|
| 查看次数: |
7446 次 |
| 最近记录: |