将HTML文件读入内存中的字符串变量

Boh*_*ohn 34 html c# file-io html-parsing

如果我在磁盘上有一个HTML文件,我怎样才能在运行时一次性读取一个String变量?然后我需要对该字符串变量进行一些处理.

一些像这样的html文件:

<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>
Run Code Online (Sandbox Code Playgroud)

emp*_*mpi 50

使用File.ReadAllText将文件位置作为参数传递.

但是,如果您的真正目标是解析html,那么我建议使用Html Agility Pack.

  • 在读入文件之前,不要忘记检查文件是否存在.:) (4认同)

L.B*_*L.B 16

使用 System.IO.File.ReadAllText(fileName)


For*_* L. 12

string html = File.ReadAllText(path);
Run Code Online (Sandbox Code Playgroud)


s15*_*99d 10

这已经被大部分覆盖了,但是当我遇到以前代码示例的问题时,还有一个补充.

Dim strHTML as String = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~/folder/filename.html"))
Run Code Online (Sandbox Code Playgroud)


Sri*_*jan 5

使用File.ReadAllText(path_to_file)阅读


vap*_*guy 5

您可以用简单的方法来做到这一点:

string pathToHTMLFile = @"C:\temp\someFile.html";
string htmlString = File.ReadAllText(pathToHTMLFile);
Run Code Online (Sandbox Code Playgroud)

或者您可以使用 FileStream/StreamReader 将其流式传输:

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

后一种方法允许您打开文件,同时仍然允许其他人对该文件执行读/写操作。我无法想象 HTML 文件会非常大,但它具有流式传输文件的额外好处,而不是像第一种方法那样将其捕获为一个大块。