web-dev-qa-db-fra.com

Lire un fichier HTML dans une variable chaîne en mémoire

Si j'ai un fichier HTML sur le disque, comment puis-je le lire en une seule fois dans une variable String au moment de l'exécution? Ensuite, je dois effectuer un traitement sur cette variable chaîne. 

Certains fichiers html comme celui-ci:

<html>
    <table cellspacing="0" cellpadding="0" rules="all" border="1" style="border-width:1px;border-style:solid;width:274px;border-collapse:collapse;">
        <COLGROUP><col width=35px><col width=60px><col width=60px><col width=60px><col width=59px></COLGROUP>
        <tr style="height:20px;">
            <th style="background-color:#A9C4E9;"></th><th align="center" valign="middle" style="color:buttontext;background-color:#D3DCE9;">A</th><th align="center" valign="middle" style="color:buttontext;background-color:#D3DCE9;">B</th><th align="center" valign="middle" style="color:buttontext;background-color:#D3DCE9;">C</th><th align="center" valign="middle" style="color:buttontext;background-color:#D3DCE9;">D</th>
        </tr><tr style="height:20px;">
            <th align="center" valign="middle" style="color:buttontext;background-color:#E4ECF7;">1</th><td align="left" valign="top" style="color:windowtext;background-color:window;">Hi</td><td align="left" valign="top" style="color:windowtext;background-color:window;">Cell Two</td><td align="left" valign="top" style="color:windowtext;background-color:window;">Actually a longer text</td><td align="left" valign="top" style="color:windowtext;background-color:window;">Final Word</td>
        </tr>
    </table>
</html>
30
Bohn

Utilisez File.ReadAllText en passant l'emplacement du fichier comme argument.

Cependant, si votre objectif réel est d'analyser le code HTML, je vous recommande d'utiliser Html Agility Pack .

44
empi

Utilisez System.IO.File.ReadAllText(fileName)

16
L.B
string html = File.ReadAllText(path);
11
Forte L.

Ceci est en grande partie déjà couvert, mais un ajout car j'ai rencontré un problème avec les exemples de code précédents.

Dim strHTML as String = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~/folder/filename.html"))
9
s15199d

Utilisez File.ReadAllText(path_to_file) pour lire

5
Srijan

Quel type de traitement essayez-vous de faire? Vous pouvez faire XmlDocument doc = new XmlDocument(); suivi de doc.Load(filename). Ensuite, le document XML peut être analysé en mémoire.

Lisez ici pour plus d'informations sur XmlDocument: 

4
Ted Spence

Vous pouvez le faire de manière simple:

string pathToHTMLFile = @"C:\temp\someFile.html";
string htmlString = File.ReadAllText(pathToHTMLFile);

Ou vous pouvez le diffuser avec FileStream/StreamReader:

using (FileStream fs = File.Open(pathToHTMLFile, FileMode.Open, FileAccess.ReadWrite))
{
    using (StreamReader sr = new StreamReader(fs))
    {
        htmlString = sr.ReadToEnd();
    }
}

Cette dernière méthode vous permet d'ouvrir le fichier tout en permettant aux autres utilisateurs d'effectuer des opérations de lecture/écriture sur le fichier. Je ne peux pas imaginer qu’un fichier HTML soit très volumineux, mais il présente l’avantage supplémentaire de le diffuser en continu au lieu de le capturer comme un gros morceau comme la première méthode.

0
vapcguy