提问人:Bohn 提问时间:8/30/2012 最后编辑:velaBohn 更新时间:11/17/2020 访问量:166883
将 HTML 文件读入内存中的字符串变量
Read a HTML file into a string variable in memory
问:
如果我在磁盘上有一个 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>
答:
69赞
empi
8/30/2012
#1
使用 File.ReadAllText 将文件位置作为参数传递。
但是,如果您的真正目标是解析 html,那么我建议您使用 Html Agility Pack。
评论
4赞
TGarrett
11/18/2016
在读取文件之前,不要忘记检查文件是否存在。:)
0赞
Harold_Finch
11/12/2018
HAP为我做到了!
25赞
L.B
8/30/2012
#2
用System.IO.File.ReadAllText(fileName)
19赞
Forte L.
8/30/2012
#3
string html = File.ReadAllText(path);
4赞
Ted Spence
8/30/2012
#4
你要做什么样的处理?你可以做,后面跟着 。然后,可以在内存中解析XML文档。XmlDocument doc = new XmlDocument();
doc.Load(filename)
有关 XmlDocument 的更多信息,请阅读此处:
5赞
Srijan
8/30/2012
#5
用于读取File.ReadAllText(path_to_file)
13赞
s15199d
10/21/2014
#6
这已经基本涵盖了,但是当我在以前的代码示例中遇到问题时,增加了一个补充。
Dim strHTML as String = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~/folder/filename.html"))
4赞
vapcguy
11/20/2018
#7
你可以用简单的方法做到这一点:
string pathToHTMLFile = @"C:\temp\someFile.html";
string htmlString = File.ReadAllText(pathToHTMLFile);
或者你可以用 FileStream/StreamReader 把它流式传输进去:
using (FileStream fs = File.Open(pathToHTMLFile, FileMode.Open, FileAccess.ReadWrite))
{
using (StreamReader sr = new StreamReader(fs))
{
htmlString = sr.ReadToEnd();
}
}
后一种方法允许您打开文件,同时仍允许其他人对文件执行读/写操作。我无法想象一个 HTML 文件非常大,但它还有一个额外的好处,那就是流式传输文件,而不是像第一种方法那样将其捕获为一个大块。
评论
0赞
om-ha
1/4/2020
后一种方法允许您打开文件,同时仍允许其他人对文件执行读/写操作。您是否暗示第一种方法禁止其他人对文件执行读取操作?因为我不这么认为。
0赞
om-ha
1/4/2020
等待您的回复@vapcguy
1赞
vapcguy
1/6/2020
@om-ha 根本没有试图暗示这一点 - 老实说,我从来没有在做 .但是,我已经使用后一个代码块的多种组合对其进行了测试。我只是把它作为对最后一个代码块中的内容的描述,因为有各种选项可以使用,而这些选项实际上并不像您认为的那样有效。File.ReadAllText
FileMode
FileAccess
1赞
Shakoor Hussain Attari
11/17/2020
#8
var htmlText = System.IO.File.ReadAllText(@"C:/filename.html");
如果文件在应用程序根目录下,则用户在下面
var htmlText = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath(@"~/filename.html"));
上一个:使导轨控制台输出更漂亮一些
下一个:如何在svg上使用事件?
评论