2011-03-12 83 views
0

我有一个关于解析XLM文档更精确的ATOM格式数据的问题。 (RSS订阅)。RSS订阅XML&ATOM解析问题 - GData - iPhone

这里是XLM文档的样本:

<item> 
      <title>Panty + Stocking Print Preview</title> 
      <link>http://SonicRocksMySocks.deviantart.com/art/Panty-Stocking-Print-Preview-200615179</link> 
      <guid isPermaLink="true">http://SonicRocksMySocks.deviantart.com/art/Panty-Stocking-Print-Preview-200615179</guid> 
      <pubDate>Fri, 11 Mar 2011 21:43:34 PST</pubDate> 
      <media:title type="plain">Panty + Stocking Print Preview</media:title> 

      <media:keywords></media:keywords> 
      <media:rating>nonadult</media:rating> 
      <media:category label="Movies &amp; TV">fanart/digital/drawings/movies</media:category> 
      <media:credit role="author" scheme="urn:ebu">SonicRocksMySocks</media:credit> 
      <media:credit role="author" scheme="urn:ebu">http://a.deviantart.net/avatars/s/o/sonicrocksmysocks.png?15</media:credit> 
      <media:copyright url="http://sonicrocksmysocks.deviantart.com">Copyright 2011 *SonicRocksMySocks</media:copyright> 
      <media:thumbnail url="http://th00.deviantart.net/fs71/300W/i/2011/070/d/c/panty___stocking_print_preview_by_sonicrocksmysocks-d3bfvnv.png" height="351" width="300"/> 

      <media:thumbnail url="http://th02.deviantart.net/fs71/150/i/2011/070/d/c/panty___stocking_print_preview_by_sonicrocksmysocks-d3bfvnv.png" height="150" width="128"/> 
      <media:content url="http://th08.deviantart.net/fs71/PRE/i/2011/070/d/c/panty___stocking_print_preview_by_sonicrocksmysocks-d3bfvnv.png" height="967" width="826" medium="image"/> 
      <media:content url="http://www.deviantart.com/download/200615179/" medium="document"/> 
      <description><![CDATA[ The final version of this print will be available for sale at Sakura Con 2011. :3<br /><div><img src="http://th00.deviantart.net/fs71/300W/i/2011/070/d/c/panty___stocking_print_preview_by_sonicrocksmysocks-d3bfvnv.png" alt="thumbnail" /></div> ]]></description> 
      <media:description type="html"><![CDATA[ The final version of this print will be available for sale at Sakura Con 2011. :3 ]]></media:description> 
     </item> 

我这是怎么分析的标题,pubdate的和链接值:

NSArray *channels = [rootElement elementsForName:@"channel"]; 
for (GDataXMLElement *channel in channels) 
{    

    NSString *blogTitle = [channel valueForChild:@"title"];      

    NSArray *items = [channel elementsForName:@"item"]; 
    for (GDataXMLElement *item in items) 
    { 

     NSString *articleTitle = [item valueForChild:@"title"]; 
     NSString *articleUrl = [item valueForChild:@"link"];    
     NSString *articleDateString = [item valueForChild:@"pubDate"];   
     NSDate *articleDate = [NSDate dateFromInternetDateTimeString:articleDateString formatHint:DateFormatHintRFC822]; 



     RSSEntry *entry = [[[RSSEntry alloc] initWithBlogTitle:blogTitle 
                articleTitle:articleTitle 
                articleUrl:articleUrl 
                articleDate:articleDate] autorelease]; 
     [entries addObject:entry];       

    }  
} 

我不知道如何检索媒体:内容线。我该怎么做? 任何人都可以帮助我吗?

谢谢了很多, 安德烈

+0

嗯,我不知道你正在使用什么库,但是你可能想要定义'media'前缀的名字空间是你的XML源代码中的任何东西(检查你的文档的根元素;它可能是使用一个'xmlns'属性)以某种方式在你的GDataXMLElement上,然后用它作为检索的一部分。知道更多关于GDataXMLelement的人,无论来自哪个库,都可能会更加明确。 – 2011-03-12 18:14:56

回答

0

您是否尝试过的item孩子迭代并在调试或NSLog的检查呢?

+0

谢谢,但请解释我做了什么?我是一个新手 – 2011-03-12 18:59:23

+0

尝试添加NSLog(@“%@”,项目);在for循环的开始附近。您可能会在控制台中获得一些有用的输出。 – koregan 2011-03-12 19:25:27

+0

它与我之前发布的XLM代码相同。 – 2011-03-12 19:38:25

0

首先ü尝试使用NSXMLParsing这个简单的教程

http://blancer.com/tutorials/i-phone/76999/parsing-xml-files/ 
0

我知道你正在使用哪个代码。这其实很简单。你可以像获得“标题”和“链接”和“发布日期”一样进行。

NSArray *channels = [rootElement elementsForName:@"channel"]; 
for (GDataXMLElement *channel in channels) 
{    

NSString *blogTitle = [channel valueForChild:@"title"];      

NSArray *items = [channel elementsForName:@"item"]; 
for (GDataXMLElement *item in items) 
{ 

    NSString *articleTitle = [item valueForChild:@"title"]; 
    NSString *articleUrl = [item valueForChild:@"link"];    
    NSString *articleDateString = [item valueForChild:@"pubDate"];   
    NSDate *articleDate = [NSDate dateFromInternetDateTimeString:articleDateString formatHint:DateFormatHintRFC822]; 

    // Right here 
    NSString *mediaCont = [item valueForChild:@"media:content"]; 



    RSSEntry *entry = [[[RSSEntry alloc] initWithBlogTitle:blogTitle 
               articleTitle:articleTitle 
               articleUrl:articleUrl 
               articleDate:articleDate] autorelease]; 
    [entries addObject:entry];       

}  
} 

之后,你将需要改变你的RSS方法的init方法来接受这个新字段。您应该尝试查看定义valueForChild的代码,并查看它如何使用GDataXML分析器。或者你可以按照建议使用NSXML。