2011-06-17 68 views
0

我正在解析此文档:http://greenmoss.dk/recipe01.xml并遍历每个元素并保存数据。但我无法找到这个元素:在XML文档中找不到元素<ingList id =“1”>

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); 
} 

如何找到该元素?

+0

您使用的是NSXMLParser吗?这是在iOS还是OS X?它是否完全进入didStartElement方法? – Anna 2011-06-17 12:43:00

+0

嗨,Anna.I确实忘了在didStartElement方法中寻找这个元素。它现在有效。谢谢:) – KasperMathias 2011-06-20 06:53:40

回答

0

它是有道理的,第一个会失败,第二个会成功。在:

<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. 
    } 
}