解析具有相同名称但具有不同属性的元素

时间:2011-10-20 12:19:20

标签: iphone objective-c ios cocoa

我是iPhone开发的新手,这个问题可能很简单,但我不知道答案。

问题:我有这个XML代码:

<im:image height="53">
     picture52x52.jpg
</im:image>

<im:image height="75">
     picture75x75.jpg
</im:image>

<im:image height="100">
     picture100x100.jpg
</im:image>

我只需解析第二个元素(第二个元素,第二个图片),但我不知道如何。我总是解析三个元素,但我只需要一个。

3 个答案:

答案 0 :(得分:2)

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict  
{ 
        NSString *imageSize = [NSString stringWithString:[attributeDict valueForKey:@"height"]];
        if([imageSize isEqualToString:@"75"])
         { 
            // parse something like this
         }
}

答案 1 :(得分:0)

您必须智能地使用这两种方法:

parser:foundCharacters:
parser:didEndElement:namespaceURI:qualifiedName:

请参阅此链接 - Handling XML Elements and Attributes

答案 2 :(得分:0)

让我再建议一个解决方案,你可以在CDATA中附上图片名称,即。像这样生成xml -

<im:image height="53">
    <![CDATA[picture52x52.jpg]]>
</im:image>

<im:image height="75">
     <![CDATA[picture75x75.jpg]]>
</im:image>

<im:image height="100">
     <![CDATA[picture100x100.jpg]]>
</im:image>

只需使用此委托方法:

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock

如果它是CDATA块中唯一包含的元素

希望你理解;)