iphone - 如何解析 XML 的多个属性?

标签 iphone ios xml-parsing attributes nsdictionary

height我是 iPhone 开发新手,我正在尝试解析包含多个属性的元素的 xml。我有几个关于解析 XML 的教程,但没有一个展示解析具有多个属性的元素的步骤。我正在尝试使用 NSXMLParser 解析 xml。我想解析第一次出现的 media:thumbnail 元素以获取第二个属性的值。非常感谢任何帮助。

我的代码:

//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>

我的代码如下:

- (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.
            }
        } 
    }
}

编辑

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

最佳答案

试试这个......

- (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); 
    }
 }
}

关于iphone - 如何解析 XML 的多个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15441088/

相关文章:

iphone - 如何实现鼠标悬停方法?

iphone - OpenSSL 不支持来自 iOS 的公钥

iphone - MBProgressHud 不随设备方向改变。?

android 网络服务响应 "parse xml to pojo exception"

也处理 FeedBurner 的 Python RSS 解析器

iphone - 什么时候使用哪个? NSURLConnection 与较低级别的套接字 API

ios - 如果从过流上下文 View Controller 中呈现,则呈现错误的 View Controller

iphone - FBLoginView 拒绝某些用户

ios - Swift - 约束或其 anchor 引用不同 View 层次结构中的项目

javascript - 从解析的 xml 构造 xml 字符串