Вывести первые два абзаца из HTML, сохраненного в виде строки - PullRequest
5 голосов
/ 13 января 2010

HTML хранится в строковой переменной в моем коде c # .net 2.0. Ниже приведен пример:

<div class="track">
    <img alt="" src="http://hits.guardian.co.uk/b/ss/guardiangu-feeds/1/H.20.3/30561?ns=guardian&pageName=Hundreds+feared+dead+in+Haiti+quake%3AArticle%3A1336252&ch=World+news&c3=GU.co.uk&c4=Haiti+%28News%29%2CDominican+Republic+%28News%29%2CCuba+%28News%29%2CBahamas+%28News%29%2CNatural+disasters+and+extreme+weather+%28News%29%2CEnvironment%2CWorld+news&c6=Rory+Carroll%2CHaroon+Siddique&c7=10-Jan-13&c8=1336252&c9=Article&c10=News&c11=World+news&c13=&c25=&c30=content&h2=GU%2FWorld+news%2FHaiti" width="1" height="1" />
</div>
<p class="standfirst">
    • Tens of thousands lose homes in 7.0 magnitude quake<br />
    • UN headquarters, schools and hospitals collapse
</p>
<p>
    René Préval, the president of Haiti, has described the devastation after last night's earthquake as "unimaginable" as governments and aid agencies around the world rushed into action.
</p>
<p>
    Préval described how he had been forced to step over dead bodies and heard the cries of those trapped under the rubble of the national parliament. "Parliament has collapsed. The tax office has collapsed. Schools have collapsed. Hospitals have collapsed," <a href="http://www.miamiherald.com/582/story/1422279.html" title="he told the Miami Herald">he told the Miami Herald</a>. "There are a lot of schools that have a lot of dead people in them." Préval said he thought thousands of people had died in the quake.
</p>

Я хочу вывести только первые два абзаца как подстроку оригинала.

Может кто-нибудь помочь?

Ответы [ 4 ]

4 голосов
/ 14 января 2010

Я использовал эту функцию в конце ...

  private string GetFirstParagraph(string htmltext)
        {
            Match m = Regex.Match(htmltext, @"<p>\s*(.+?)\s*</p>");
            if (m.Success)
            {
                return m.Groups[1].Value;
            }
            else
            {
                return htmltext;
            }
        }
3 голосов
/ 13 января 2010

Посмотрите на Html Agility Pack .

Он предоставляет очень мощный API для анализа HTML, который можно использовать для извлечения данных, которые вы хотите.

0 голосов
/ 13 января 2010

Вы можете написать несколько методов, которые загружают HTML-код в переменную веб-браузера, а затем используют DOM для обхода узлов и извлечения произвольной пользовательской логики. Проверьте это учебник .

Ниже приведен фрагмент о том, как создать веб-браузер в коде, а не о том, как это сделать в руководстве:

using System.Windows.Forms;

WebBrowser _Browser = null;
string _Source = "Your HTML goes here";

_Browser = new WebBrowser();
_Browser.Navigate("about:Blank");
_Browser.Document.OpenNew(true);
_Browser.Document.Write(_Source);
0 голосов
/ 13 января 2010

Вы используете JavaScript? Вы можете использовать разнесение по тегам p, чтобы получить div + first para в одном фрагменте массива и каждый из тегов p в соответствующих элементах.

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