2010-07-22 7 views
0

Je veux obtenir le texte d'une page html en utilisant une simple application dans C#? Si des éléments imbriqués -à-dire.,Comment analyser le HTMLDocument dans C#?

<Table> 
    <TR> 
     <TD>**ABC** 
     </TD> 
     <TD>**1** 
     </TD> 
    </TR> 
    <TR> 
     <TD>**XYZ** 
     </TD> 
     <TD>**2** 
     </TD> 
    </TR> 
</Table> 

Comment puis-je obtenir le texte (gras) directement values.I veulent les enregistrer dans ma base de données et que vous voulez aussi montrer à gridview?

HtmlDocument htmlSnippet = new HtmlDocument(); 
htmlSnippet = LoadHtmlSnippetFromFile(); 

private HtmlDocument LoadHtmlSnippetFromFile() 
{ 
    //TextReader reader = File.OpenText(Server.MapPath("~/App_Data/HtmlSnippet.txt")); 

    WebClient webClient = new WebClient(); 
    const string strUrl = "http://www.dsebd.org/latest_PE_all2_08.php"; 

    Stream reader = webClient.OpenRead(strUrl); 

    HtmlDocument doc = new HtmlDocument(); 
    doc.Load(reader); 

    reader.Close(); 

    return doc; 
} 

De ce htmlSnippet comment pourrais-je obtenir la valeur?

Répondre

1

Je ne suis pas sûr, ce dont vous avez besoin ... compte tenu de votre exemple, voulez-vous une chaîne "**ABC****1****XYZ****2**"?

Ensuite, cela devrait fonctionner: htmlSnippet.Body.OuterText

EDIT: Ok, en essayant un exemple des valeurs séparées ...

HtmlElement tableElement = FindElement(HtmlDocument.Body, "table"); 
foreach(HtmlElement row in tableElement.Children) 
{ 
    if (row.Name.ToLower() == "tr") 
    { 
     // create whatever class you use for a row 
     foreach(HtmlElement cell in row.Children) 
     { 
      if (cell.Name.ToLower() == "td") 
      { 
       // add a new cell to your row using cell.InnerText 
      } 
     } 
    } 
} 

// *** snip *** 

private HtmlElement FindElement(HtmlElement element, string name) 
{ 
    if (element.Name.ToLower() == name) 
    { 
     return element; 
    } 
    foreach(HtmlElement child in element.Children) 
    { 
     HtmlElement test = FindElement(test, name); 
     if (test != null) 
     { 
      return test; 
     } 
    } 
    return null; 
} 

Désolé, je n'ai pas Visual Studio ici en ce moment pour tester le code. .. bonne chance ;-)

+0

Mon exemple contient deux lignes. Chaque ligne contient deux colonnes. Je veux Chaque valeur de colonne.Je veux les enregistrer comme ligne dans ma base de données. – shamim

+0

Ah, ok, alors vous devez parcourir htmlSnippet.Body.Children et rechercher HtmlElements avec le bon nom. – Hinek

+0

htmlSnippet.Body.Children ne fonctionne pas si j'écris htmlSnippet.DocumentNode.Children que le travail.Comment chercher HtmlElements allez-vous s'il vous plaît envoyer un peu de syntaxe – shamim