Получение последнего <p>тега HTML-документа - PullRequest
0 голосов
/ 31 марта 2011

У меня есть HTML-документ, например:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body style="font-family: Geneva; color: rgb(0, 0, 0); font-size: 12px; word-wrap: break-word; font-weight: normal; font-style: normal; text-decoration: none; ">
        <p style="font-family: LucidaGrande; color: rgb(51, 102, 204); margin-top: 6px; margin-bottom: 6px; word-wrap: break-word; font-weight: normal; font-style: normal; text-decoration: none; ">
            fdskl says: (6:50:04 AM)
        </p>
        <p style="font-family: Arial-ItalicMT; color: rgb(0, 0, 0); margin-left: 36px; margin-top: 6px; margin-bottom: 6px; word-wrap: break-word; font-weight: normal; font-style: normal; text-decoration: none; ">
            Hello
        </p>
        <p style="font-family: LucidaGrande; color: rgb(51, 102, 204); margin-top: 6px; margin-bottom: 6px; word-wrap: break-word; font-weight: normal; font-style: normal; text-decoration: none; ">
            fdskl says: (6:50:18 AM)
        </p>
        <p style="font-family: Arial-ItalicMT; color: rgb(0, 0, 0); margin-left: 36px; margin-top: 6px; margin-bottom: 6px; word-wrap: break-word; font-weight: normal; font-style: normal; text-decoration: none; ">
            How are you?
        </p>
    </body>
</html>

и я хочу получить все, что находится внутри последнего тега p этого HTML. Так что в этом случае это будет «Как дела?». Используя Какао, как я могу это сделать? Спасибо!

1 Ответ

0 голосов
/ 31 марта 2011

Ваш лучший вариант - использовать NSXMLDocument:

NSData *htmlData = ... // get the html data, preferably asynchronously
NSXMLDocument *document = [[[NSXMLDocument alloc] initWithData:htmlData options:NSXMLDocumentTidyHTML error:NULL] autorelease]; 
NSArray *nodes = [document nodesForXPath:@"//body/p" error:NULL];
NSXMLNode *lastP = [nodes lastObject];
NSLog(@"%@", [lastP stringValue]);

Вы должны также проверять наличие ошибок вместо передачи значения NULL, если вы хотите, чтобы ваш код был более надежным.

...