#iphone #objective-c #ios #cocoa-touch #ios4
#iPhone #objective-c #iOS #cocoa-touch #ios4
Вопрос:
Как извлечь атрибуты из XML с помощью NSXML parser??
Вот мой xml:
<item>
<title>Button hails 'amazing' win</title>
<description>Jenson Button hailed yesterday's crazy Canadian Grand Prix victory as the best of his Formula One career.
</description>
<link>http://www.skysports.com/story/0,19528,12433_6986809,00.html</link>
<guid isPermaLink="false">12433_6986809</guid>
<pubDate>Mon, 13 Jun 2011 06:21:00 GMT</pubDate>
<category>News Story</category>
<enclosure type="image/jpg" url="http://img.skysports.com/11/06/128x67/Canadian-GP-Jenson-Button-celebrates1_2609288.jpg" length="123456" />
</item>
Мне нужно получить URL-адрес из тегов вложения.
Спасибо
Ответ №1:
if([elementName isEqualToString:@"enclosure"])
{
NSString *urlValue=[attributeDict valueForKey:@"url"];
NSString *urlValue=[attributeDict valueForKey:@"type"];
NSString *urlValue=[attributeDict valueForKey:@"length"];
}
Комментарии:
1. Спасибо за ответ. Я хотел бы добавить, что эти строки должны перейти к методу делегирования,
NSXMLParser
который является:- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
.2. Сделал мой день … слишком простым ..:)
Ответ №2:
вам необходимо использовать NSXMLParser и его функции делегирования
—
(BOOL) parse:(NSData *)xmlData
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
}
тогда вам нужно использовать что-то вроде этого
if([elementName isEqualToString:@"enclosure"])
{
NSMutableDictionary *Dict=[NSMutableDictionary dictionary];
[Dict setObject:[attributeDict valueForKey:@"url"] forKey:@"url"];
[categoryDict setObject:[attributeDict valueForKey:@"type"] forKey:@"type"];
}
Ответ №3:
Метод…
(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
Предоставляет вам словарь атрибутов и их ключей (attributeDict)… ищите ввод с ключом «url», когда имя элемента равно «вложению»…
Ответ №4:
Вот объяснение: Пример xml с атрибутом:
Используйте метод делегирования xml:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"remoteContent"]){
NSString* href = [attributeDict objectForKey:@"href"];
NSLog(@"href %@",href);
[someArray addObject:href];
}
}