2010-01-13 2 views
5

Ho html memorizzato in una variabile stringa all'interno del mio codice C# .net 2.0. Di seguito è un esempio:Uscita primi due paragrafi da html memorizzati come stringa

<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> 

Voglio solo emettere i primi due paragrafi come una sottostringa dell'originale.

Qualcuno può aiutare?

risposta

4

Ho usato questa funzione alla fine ...

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

Stai usando JavaScript? Potresti usare explode sui tag p per ottenere il primo punto div + in un pezzo della matrice e ciascuno dei tag p nei rispettivi elementi.

0

È possibile scrivere alcuni metodi che caricano l'HTML in una variabile del browser Web e quindi utilizzano il DOM per attraversare i nodi ed estrarre la logica personalizzata che si desidera. Dai un'occhiata a questo tutorial.

Ecco un frammento di come creare il webbroswer nel codice dietro, piuttosto che come il tutorial ti dice come farlo:

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

Date un'occhiata al Html Agility Pack.

Espone una API molto potente per l'analisi dell'HTML che può essere utilizzata per estrarre i dati desiderati.

+0

+1 Grazie per il link –