C# 如何使用C读取一行HTML#

C# 如何使用C读取一行HTML#,c#,html,parsing,C#,Html,Parsing,我知道如何读取txt文件中的一行,但出于某种原因,C#无法检测HTML文件中的行尾。这段代码基本上打开html文件并尝试逐行解析以搜索指定的字符串。即使只是尝试打印HTML文件中的第一行文本,也不会显示任何符号 using (StreamReader sr = new StreamReader("\\\\server\\myFile.html")) { String line; while ((line = sr.ReadLine(

我知道如何读取txt文件中的一行,但出于某种原因,C#无法检测HTML文件中的行尾。这段代码基本上打开html文件并尝试逐行解析以搜索指定的字符串。即使只是尝试打印HTML文件中的第一行文本,也不会显示任何符号

using (StreamReader sr = new StreamReader("\\\\server\\myFile.html"))
        {
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                if(line == ("<td><strong>String I wantstrong></td>"))
                {
                    Label1.Text = "Text Found";
                    break;
                }
            }
        }
使用(StreamReader sr=newstreamreader(“\\\\server\\myFile.html”))
{
弦线;
而((line=sr.ReadLine())!=null)
{
如果(行==(“字符串I wantstrong>”)
{
Label1.Text=“找到的文本”;
打破
}
}
}
我用一个普通的txt文件尝试了这个方法,效果非常好,只是在尝试解析HTML文件时没有


谢谢。

如果您知道要解析的HTML是XHTML,为什么不使用System.XML将此HTML解析为XML?

您不需要发明轮子。解析HTML的更好方法是使用HTML解析器:

这里也有类似的问题


希望能有所帮助。

到目前为止,最好的方法是使用

关于这一点的更多信息可以在前面的堆栈溢出问题中找到


读取行的外部循环工作正常。我猜发生了以下情况之一:

  • HTML文件为空
  • HTML文件中的第一行为空
在这两种情况下,您都不会看到任何打印内容

现在,转到您的循环:

你可能看不到你所期望的,因为

 if(line == ("<td><strong>String I wantstrong></td>"))
 {
    Label1.Text = "Text Found";
    break;
 }
if(行==(“字符串I wantstrong>”)
{
Label1.Text=“找到的文本”;
打破
}

查找精确的匹配项。如果这是您的实际代码,则缺少左括号
结尾
strong
是结尾标记。很抱歉,我在复制和粘贴时弄错了,文件中有什么吗?运行应用程序的用户是否具有使用该网络资源的权限?如果在本地复制文件,此代码是否有效?如果在循环中中断,是否命中断点?在我看来,这里需要完成的调试工作相当简单……如果您试图读取一个您没有权限(或其他方面不存在)的文件,就会出现错误。但无论它是否包含内容。。。嗯;)