извлечь часть URl после синтаксического анализа XML? - PullRequest
2 голосов
/ 28 апреля 2009

Я пытаюсь разобрать файл XML, в котором элемент с именем "description" имеет следующий вид:

<description>
    <![CDATA[
        <a href='http://www.okmagazine.com/posts/view/13756/'>
            <img src='http://www.okmagazine.com/img/photos/thumbs/27044' />
        </a>
        <br />
        Ashlee and Pete take their tiny tot to FAO Schwarz in NYC for some new toys. 
        <p> <strong>Pete Wentz</strong> and <strong>Ashlee Simpson Wentz</strong> made the new parent pilgrimage to New York’s FAO Schwarz today, where 6-month old <strong>Bronx Mowgli </strong>was the...]]>
</description>

Я хочу получить ссылку в теге <img src='http://www.okmagazine.com/img/photos/thumbs/27044'>, с помощью которой я могу отобразить изображение в моем представлении изображения ... Как я могу отделить эту строку от содержимого тега описания?

Часть кода при разборе, как указано ниже

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    //NSLog(@"found characters: %@", string);
    // save the characters for the current item...
    if ([currentElement isEqualToString:@"title"]) {
        [currentTitle appendString:string];
    } else if ([currentElement isEqualToString:@"link"]) {
        [currentLink appendString:string];
    } else if ([currentElement isEqualToString:@"description"]) {
        [currentSummary appendString:string];
    } else if ([currentElement isEqualToString:@"pubDate"]) {
        [currentDate appendString:string];
    }
}

Пожалуйста, помогите

1012 * привет *

Arun

Ответы [ 4 ]

1 голос
/ 28 апреля 2009

Я никогда не использовал эту точную структуру, но вы должны иметь в виду, что, хотя он и уведомит вас, когда найдет CDATA, все, что находится внутри, является просто открытым текстом для анализатора. Похоже, вы хотите реализовать foundCDATA . Вы получите блок NSData, и оттуда вы должны проанализировать содержимое. Теперь вы можете использовать другой синтаксический анализатор для этого, но, вероятно, быстрее просто выполнить ручную подстроку.

0 голосов
/ 28 апреля 2009

Атрибуты передаются в метод делегата didStartElement синтаксического анализатора как словарь строк с ключом имени атрибута. Таким образом, вы можете извлечь нужные URL-адреса из атрибутов, используя objectForKey: NSDictionary с именем атрибута в качестве ключа. i.e.:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if([elementName compare: @"img"] == NSOrderedSame)    // check for <img  ...> element
    {
        NSString* url = [attributeDictionary objectForKey:@"src"]; 
        // url now contains the url you require from the HTML  
0 голосов
/ 28 апреля 2009
NSString *str = @"<![CDATA[<a href='http://www.okmagazine.com/posts/view/13756/'><img src='http://www.okmagazine.com/img/photos/thumbs/27044' /></a><br />Ashlee and Pete take their tiny tot to FAO Schwarz in NYC for some new toys. <p> <strong>Pete Wentz</strong> and <strong>Ashlee Simpson Wentz</strong> made the new parent pilgrimage to New York’s FAO Schwarz today, where 6-month old <strong>Bronx Mowgli </strong>was the...]]>";


    NSRange range = [str rangeOfString: @"<img src='"];
    str = [str substringFromIndex: range.location + range.length];
    range = [str rangeOfString: @"'"];
    str =[str substringToIndex: range.location];
    CFShow(str);
0 голосов
/ 28 апреля 2009

Задумывались ли вы об использовании regexp ?

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