它是有道理的,第一个会失败,第二个会成功。在:
<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.
}
}
您使用的是NSXMLParser吗?这是在iOS还是OS X?它是否完全进入didStartElement方法? – Anna 2011-06-17 12:43:00
嗨,Anna.I确实忘了在didStartElement方法中寻找这个元素。它现在有效。谢谢:) – KasperMathias 2011-06-20 06:53:40