2010-01-13 1 views
5

У меня есть html, хранящийся в строковой переменной в моем коде C# .net 2.0. Ниже приведен пример:Вывод первых двух абзацев из html, хранящихся в виде строки

<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

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

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; 
      } 
     } 
0

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

0

Вы можете написать несколько методов, которые загружают HTML в переменную webbrowser, а затем использовать DOM для перемещения узлов и вытащить нужную вам логику. Проверьте это tutorial.

Вот отрывок о том, как создать webbroswer в код, а не как учебник расскажет вам, как это сделать:

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); 
3

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

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

+0

+1 Спасибо за ссылку –