c++
  • c++builder-xe2
  • c++builder-6
  • c++builder-xe
  • c++builder-xe5
  • 2014-10-25 3 views -1 likes 
    -1

    у меня есть: Memo2->Text= IdHTTP1->Get("http://www.twitch.tv/starladder1");C++ Builder AnsiString удалить все кроме арматуры < ... >

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

    Update: что этот сайт использует malformed 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; 
    

     Смежные вопросы

    • Нет связанных вопросов^_^