Как игнорировать дополнительные html-теги при разборе RSS XML в Objective-c / xcode? - PullRequest
0 голосов
/ 07 апреля 2011

Мне просто нужен следующий текст из тега «discription» с использованием Objective-c для программирования на iPhone;

Ни правительство, ни частный сектор в Непале не имеют резервного копирования данных и приложений за пределами площадки нарасстояние, которое может быть безопасным после стихийного бедствия в одном месте.Офис начальника Управления по сертификации Раджан Радж Панта предупредил, что ...

<description>
<table border="0" cellpadding="2" cellspacing="7" style="vertical-align:top;">
<tr>
<td width="80" align="center" valign="top">
<font style="font-size:85%;font-family:arial,sans-serif"></font></td>
<td valign="top" class="j">
<font style="font-size:85%;font-family:arial,sans-serif">
<br />
<div style="padding-top:0.8em;">
<img alt="" height="1" width="1" /></div>
<div class="lh">
<a href="http://news.google.com/news/url?sa=t&amp;fd=R&amp;usg=AFQjCNG5gNh3aGY3uxIlUjnsJ_C4ugrnrg&amp;url=http://www.thehimalayantimes.com/fullNews.php?headline%3DJapan%2Bquake%2Ba%2Bwake-up%2Bcall%2Bfor%2BNepal%2BIT%2Bsector%26NewsID%3D280789">
<b>Japan quake a wake-up call for 
<b>Nepal</b> IT sector</b></a>
<br />
<font size="-1">
<b>
<font color="#6f6f6f">Himalayan Times</font></b></font>
<br />
<font size="-1">Neither the government nor private sector in 
<b>Nepal</b> has off-site backup of data and applications at a distance that can be safe after a disaster at one 
<b>location</b>. Office of the Controller of Certification chief Rajan Raj Panta warned that as the 
<b>...</b></font>
<br />
<font size="-1" class="p"></font>
<br />
<font class="p" size="-1">
<a class="p" href="http://news.google.com/news/more?pz=1&amp;ned=uk&amp;ncl=dxKbHaltcQfMZ4M">
<nobr>
<b></b></nobr></a></font></div></font></td></tr></table>
</description>

Пожалуйста, помогите мне, как мне игнорировать все эти нежелательные теги и тексты HTML?

На самом деле я использую поиск новостей Google rss, например: http://news.google.com/news?q=location:london&output=rss Есть ли другой способ получения новостей RSS на основе местоположения?

1 Ответ

1 голос
/ 07 апреля 2011

Итак, вы сделали один синтаксический анализ необработанного XML, предоставив вам текст всего внутри тегов (который экранирован в оригинале, поэтому первый синтаксический анализ не будет рассматриваться слишком глубоко), но ониотправка в формате HTML RSS-каналы, и вы хотите простой текст?Было бы приемлемо, скажем, извлечь весь текст внутри тега, который имеет размер -1?Если так, то этого может быть достаточно:

// relevant class members are:
BOOL acceptText;
NSMutableString *totalText;

// when a new element starts, check if it's a 'font' tag, and if so,
// decide whether to accept subsequent text based on its size
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
    if([elementName isEqualToString:@"font"])
    {
        acceptText = [[attributeDict objectForKey:@"size"] intValue] == -1;
    }
}

// upon receiving new characters, copy them into the string only if
// that's what we're doing right now
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if(acceptText)
        [totalText appendString:string];
}

Это немного грязное исправление, которое в лучшем случае считается скриншотом.Все, что им нужно, это изменить свой HTML-макет, и ваш скребок сломается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...