C ++ Builder xe2 — C ++ Builder AnsiString удалить все, кроме & lt; … & gt;

Я имею: Memo2->Text= IdHTTP1->Get("http://www.twitch.tv/starladder1");

В Memo2:

`<!DOCTYPE html>
<html lang='en' style='overflow: hidden;' xml:lang='en' xmlns:fb='http://www.facebook.com/2008/fbml' xmlns:og='http://opengraphprotocol.org/schema/' xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>Twitch</title>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<meta content='app-id=460177396, app-argument=twitch://open' name='apple-itunes-app'>
<meta content='Twitch' name='description'>
<link href='/favicon.ico' rel='shortcut icon' type='image/x-icon'>
<meta content='general' name='rating'>
<meta content='NIH9y45AePyUB62Ur2myinvJOvH77ufgjd6wKiQB6sA' name='google-site-verification'>
<a href='https://plus.google.com/115463106831870703431' rel='publisher'></a>
<meta content='Twitch' property='og:site_name'>
<meta content='161273083968709' property='fb:app_id'>
<meta content='streamname' property='og:title'>
<meta content='STREAM NAME STREAM NAME' property='og:description'>
<meta content='http://static-cdn.jtvnw.net/jtv_user_pictures/starladder1-profile_image-557367f831a49ebb-600x600.png' property='og:image'>
<meta property='og:url'>
<meta content='video.other' property='og:type'>
<meta content='http://www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf?channel=starladder1&playerType=facebook' property='og:video'>
<meta content='https://www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf?channel=starladder1&playerType=facebook' property='og:video:secure_url'>
<meta content='application/x-shockwave-flash' property='og:video:type'>
<meta content='378' property='og:video:height'>
<meta content='620' property='og:video:width'>`

Как удалить ВСЕ, кроме ‘STREAM NAME STREAM NAME’. Мне нужно Label1-> Caption = ‘STREAM NAME STREAM NAME’.

-1

Решение

Рассматриваемый сайт использует XHTML, который совместим с XML, так что вы можете использовать любой XML-парсер для извлечения значений, например Embarcadero. TXMLDocument компонент или любое количество сторонних парсеров (я предпочитаю libxml2 себя). Вы заинтересованы в content атрибут meta элемент которого property атрибут og:description, После разбора XHTML вы можете вручную просмотреть элементы, просматривая property атрибуты, пока вы не найдете тот, который вы хотите, или вы можете использовать запрос XPath, чтобы найти этот конкретный элемент, например: /html/head/meta[@property='og:description']

Обновить: получается, что рассматриваемый сайт использует бесформенный XHTML, поэтому анализатор XML не будет правильно его обрабатывать. Поэтому вместо этого найдите сторонний анализатор HTML / XHTML или просто выполните простой поиск по подстроке вручную, например:

String Resp = IdHTTP1->Get("http://www.twitch.tv/starladder1");
String StreamName;

int i = Resp.Pos("property='og:description'");
if (i != 0)
{
i = PosEx("content='", Resp, RPos("<meta ", Resp, i)) + 9;
StreamName = Resp.SubString(i, PosEx("'", Resp, i) - i);
}
Label1->Caption = StreamName;
1

Другие решения


По вопросам рекламы [email protected]