GDataXML получить дочерний узел
Вот мои данные XML:
<item>
<title>The Powerful Academician Able to Reduce Tobacco Hazards</title>
<link>http://china15min.com/2013/03/26/the-powerful-academician-able-to-reduce-tobacco-hazards/</link>
<comments>http://china15min.com/2013/03/26/the-powerful-academician-able-to-reduce-tobacco-hazards/#comments</comments>
<pubDate>Tue, 26 Mar 2013 08:43:37 +0000</pubDate>
<dc:creator>Panda Walking</dc:creator>
<category><![CDATA[Economics]]></category>
<category><![CDATA[Academician of Chinese Engineering Academy]]></category>
<category><![CDATA[China Tobacco Control Association]]></category>
<category><![CDATA[China's tobacco industry]]></category>
<category><![CDATA[CORESTA]]></category>
<category><![CDATA[low-tar cigarettes in China]]></category>
<category><![CDATA[signatory country of the World Health Assembly on Tobacco Control Framework Convention]]></category>
<category><![CDATA[smokers in China]]></category>
<category><![CDATA[Xie Jian Ping]]></category>
<category><![CDATA[Yunnan]]></category>
<guid isPermaLink="false">http://china15min.com/?p=1891</guid>
<description><![CDATA[During the two sessions, the deputies of NPC are obliged to answer journalists’ questions, which may include special topics besides national affairs. For example, why is the “tobacco academician” able to keep his position unswayed despite strong opposition from various... <a href="http://china15min.com/2013/03/26/the-powerful-academician-able-to-reduce-tobacco-hazards/" class="read-more">Read More ›</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=china15min.com&blog=37468365&post=1891&subd=china15min&ref=&feed=1" width="1" height="1" />]]></description>
<wfw:commentRss>http://china15min.com/2013/03/26/the-powerful-academician-able-to-reduce-tobacco-hazards/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
<media:content url="http://1.gravatar.com/avatar/ad06eed181b094ac3022d4507d38c2b7?s=96&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&r=G" medium="image">
<media:title type="html">china15min</media:title>
</media:content>
<media:content url="http://china15min.files.wordpress.com/2013/03/xiejinping.jpg" medium="image">
<media:title type="html">xiejinping</media:title>
</media:content>
</item>
С помощью этого метода я могу получить узлы "link", "title" и "pubDate",
- (void)parseRss:(GDataXMLElement *)rootElement entries:(NSMutableArray *)entries {
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];
BQWRSSEntry *entry = [[BQWRSSEntry alloc] initWithBlogTitle:blogTitle
articleTitle:articleTitle
articleUrl:articleUrl
articleDate:articleDate];
[entries addObject:entry];
}
}
}
И я использую тот же метод, чтобы получить "описание", но строка результата равна нулю.
Как я могу получить "описание" и второе "медиа: URL-адрес контента" строка URL-адреса " http://china15min.files.wordpress.com/2013/03/xiejinping.jpg"
Пожалуйста, помогите мне и большое спасибо.
1 ответ
Решение
Я не знаю, почему вы не можете получить описание. Вы можете легко получить значение следующим образом:
NSString *description = [item valueForChild:@"description"];
В противном случае, чтобы получить вторую строку URL "media:content url", выполните следующее:
NSArray *mediaContents = [item elementsForName:@"media:content"];
if ([mediaContents count] > 1)
{
GDataXMLElement *media2 = [mediaContents objectAtIndex:1];
GDataXMLNode *urlString = [media2 attributeForName:@"url"];
}
Полный код должен выглядеть так:
- (void)parseRss:(GDataXMLElement *)rootElement entries:(NSMutableArray *)entries {
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"];
NSString *description = [item valueForChild:@"description"];
NSArray *mediaContents = [item elementsForName:@"media:content"];
if ([mediaContents count] > 1)
{
GDataXMLElement *media2 = [mediaContents objectAtIndex:1];
GDataXMLNode *urlString = [media2 attributeForName:@"url"];
}
BQWRSSEntry *entry = [[BQWRSSEntry alloc] initWithBlogTitle:blogTitle
articleTitle:articleTitle
articleUrl:articleUrl
articleDate:articleDate];
[entries addObject:entry];
}
}
}