#iphone #objective-c #ios #cocoa
#iPhone #objective-c #iOS #какао
Вопрос:
Я новичок в разработке 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>
Мне нужно разобрать только второй элемент (второй элемент, второе изображение), но я не знаю как. Я всегда разбираю три элемента, но мне нужен только один.
Ответ №1:
- (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
}
}
Ответ №2:
Вы должны использовать эти два метода разумно :
parser:foundCharacters:
parser:didEndElement:namespaceURI:qualifiedName:
Пожалуйста, обратитесь к этой ссылке — Обработка XML-элементов и атрибутов
Ответ №3:
Позвольте мне предложить вам еще одно решение: вы можете вложить имя изображения в 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.
Надеюсь, вы поняли 😉