RSS-канал XML и проблема с анализом ATOM - GData - iPhone

98
6

У меня вопрос о синтаксическом анализе XLM-документа более точно в формате формата ATOM. (RSS-канал).


Вот пример документа 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 & 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];

}
}


Я не знаю, как получить медиа-контент: строка содержимого. Как мне это сделать?
Может ли кто-нибудь помочь мне с этим?


Большое вам спасибо,
Андрей

спросил(а) 2021-01-25T16:04:21+03:00 4 месяца, 2 недели назад
1
Решение
98

Я знаю, какой код вы используете. Это на самом деле очень просто. Вы делаете это так же, как и "title" и "link" и "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];

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

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

}
}

После этого вам нужно будет изменить метод init для RSSEntry, чтобы принять это новое поле. Вы должны попытаться взглянуть на код, который определяет valueForChild, и посмотреть, как он использует парсер GDataXML. Или вы можете использовать NSXML, как было предложено.

ответил(а) 2021-01-25T16:04:21+03:00 4 месяца, 2 недели назад
45

Вы пытались выполнить итерацию через дочерние элементы item и изучить их в отладчике или NSLog?

ответил(а) 2021-01-25T16:04:21+03:00 4 месяца, 2 недели назад
45

Сначала попробуйте использовать NSXMLParsing с помощью этого простого учебника


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

ответил(а) 2021-01-25T16:04:21+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема