2013-03-15 2 views
0

heightI'm a noob для разработки iphone, и я пытаюсь разобрать xml с элементами, которые содержат несколько атрибутов. У меня есть несколько руководств по разбору XML, но ни один из них не показывает шаги для анализа элемента с несколькими атрибутами. Я пытаюсь проанализировать XML-файл с помощью NSXMLParser. Я хочу проанализировать первое появление носителя: thumbnail element для значения второго атрибута. Любая помощь приветствуется.Как обработать XML для нескольких атрибутов?

МОЙ КОД:

// XML

<item> 
    <title>March 15 AM Metals Commentary: Eric Zuccarelli</title> 
    <link>http://link.brightcove.com/services/link/bcpid1683318714001/bclid1644543007001/bctid2228319176001?src=mrss</link> 
    <description>Eric Zuccarelli, Independent Copper Trader</description> 
    <guid>http://link.brightcove.com/services/link/bcpid1683318714001/bclid1644543007001/bctid2228319176001?src=mrss</guid> 
    <pubDate>Fri, 15 Mar 2013 06:40:38 -0700</pubDate> 
    <media:player height="546" url="http://link.brightcove.com/services/link/bcpid1683318714001/bclid1644543007001/bctid2228319176001?src=mrss" width="966"/> 
    <media:keywords>commentary,CME Group,financial products,cmedaily,nymex,metals,youtube,Market Commentary,Zuccarelli</media:keywords> 
    <media:thumbnail height="90" url="http://brightcove.vo.llnwd.net/d21/unsecured/media/49919183001/49919183001_2228333209001_th-514324d6e4b02e906f7476ba-806787304001.jpg?pubId=49919183001" width="120"/> 
    <media:thumbnail height="360" url="http://brightcove.vo.llnwd.net/d21/unsecured/media/49919183001/49919183001_2228333208001_vs-514324d6e4b02e906f7476ba-806787304001.jpg?pubId=49919183001" width="480"/> 
    <media:category>Metals</media:category> 
    <bc:playerid>1683318714001</bc:playerid> 
    <bc:lineupid>1644543007001</bc:lineupid> 
    <bc:titleid>2228319176001</bc:titleid> 
    <bc:duration>215</bc:duration> 
    <dcterms:valid/> 
    <bc:accountid>49919183001</bc:accountid> 
</item> 

Мой код выглядит follws:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{    
    //NSLog(@"found this element: %@", elementName); 
    currentElement = [elementName copy]; 
    if ([elementName isEqualToString:@"item"]) { 
     // clear out our story item caches... 
     item = [[NSMutableDictionary alloc] init]; 
     currentTitle = [[NSMutableString alloc] init]; 
     currentDate = [[NSMutableString alloc] init]; 
     currentSummary = [[NSMutableString alloc] init]; 
     currentLink = [[NSMutableString alloc] init]; 
     currentBright = [[NSMutableString alloc] init]; 
     if([elementName isEqualToString:@"media:thumbnail"]){ 
      if([attributeDict objectForKey:@"height"]==90){ 
       currentBright = [attributeDict objectForKey:@"url"]; 
       NSLog(@"Brightcove Url:%@", currentBright); //<--Not reaching this point. 
      } 
     } 
    } 
} 

EDIT

if([elementName isEqualToString:@"media:thumbnail"]&&[attributeDict objectForKey:@"height"]==90){ 
    currentBright = [attributeDict objectForKey:@"   
    NSLog(@"Brightcove Url:%@", currentBright); 
} 
+0

Какой элемент вы говорите? –

+0

Я пытаюсь разобрать первое появление для его url –

ответ

1

Просто попробуйте это ....

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {   

    currentElement = [elementName copy]; 
    if ([elementName isEqualToString:@"item"]) { 
    item = [[NSMutableDictionary alloc] init]; 
    currentTitle = [[NSMutableString alloc] init]; 
    currentDate = [[NSMutableString alloc] init]; 
    currentSummary = [[NSMutableString alloc] init]; 
    currentLink = [[NSMutableString alloc] init]; 
    currentBright = [[NSMutableString alloc] init]; 
} 
else if([elementName isEqualToString:@"media:thumbnail"]) { 
    if([attributeDict objectForKey:@"height"]==90) { 
     currentBright = [attributeDict objectForKey:@"url"]; 
     NSLog(@"Brightcove Url:%@", currentBright); 
    } 
} 
} 
+0

Большое вам спасибо! Это заставило меня задуматься в последний час. –

0

Вы никогда не собираетесь ударить второе или третье условие, потому что как элемент elementName может быть изменен без предварительной настройки? Вместо этого вы должны разблокировать свои условные обозначения.

Прямо сейчас, что происходит это:

-didStartTag

ElementName = пункт -> первый condtional хит -> терпит неудачу второй

-didStartTag

ElementName = название -> терпит неудачу первый conditonal

и т. Д.

+0

Спасибо, что ответили. Я все еще не могу заставить его работать. Проверьте мои изменения. –

+0

Вы проверяете 90? Разве вы не должны проверять «высоту»? – Max

+0

Да, я только что исправил это. Но мне все еще не повезло –

Смежные вопросы