2010-01-13 7 views
5

Tengo html almacenado en una variable de cadena dentro de mi código C# .net 2.0. A continuación se muestra un ejemplo:Salida de los dos primeros párrafos de html almacenado como cadena

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

Solo quiero mostrar los dos primeros párrafos como una subcadena del original.

¿Alguien puede ayudar?

Respuesta

4

he usado esta función al final ...

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

¿Estás usando JavaScript? Puede usar explotar en las etiquetas p para obtener div + first para en una pieza de la matriz, y cada una de las etiquetas p en sus respectivos elementos.

0

Puede escribir algunos métodos que carguen el código HTML en una variable del navegador web y luego utilicen DOM para recorrer los nodos y extraer la lógica personalizada que desee. Mira esto tutorial.

Aquí hay un fragmento de cómo crear el webbroswer en el código detrás en lugar de cómo el tutorial te dice cómo hacerlo:

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

Tener un vistazo a la Html Agility Pack.

Expone una API muy poderosa para analizar HTML que se puede utilizar para extraer los datos que desea.

+0

+1 Gracias por el enlace –

Cuestiones relacionadas