请问在C#中如何读取html文件的节点

new_4 2008-05-27 09:04:38
HTML代码如下

<tr class="test">
<td>111</td>
</tr>
<tr class="test" style="width:100%;">
<td>
<table>
<tr>
<td>222</td>
</tr>
</table>
</td>
</tr>
<tr class="test" align="center">
<td>333</td>
</tr>
<tr class="test">
<td>444</td>
</tr>
<tr class="test" id="55555">
<td>555555555asd</td>
</tr>

如何匹配读取所有<tr到</tr>的内容并加入数组?
写了段代码,不过貌似不对

StreamReader sr = new StreamReader(@"C:\temp.html", Encoding.Default);
string HtmlCode = sr.ReadToEnd();
Regex r = new Regex(@"/<tr(.*)/>(.*)/<\/tr/>");
string[] s = r.Split(HtmlCode);
for(int i=0;i<s.Length;i++)
{
Console.WriteLine(s[i]);
Console.WriteLine("节点 "+i.ToString());
}


请高手指点下
...全文
1941 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
new_4 2008-05-28
  • 打赏
  • 举报
回复
StreamReader sr = new StreamReader(@"C:\temp.txt", Encoding.Default);
string html = sr.ReadToEnd();
foreach(Match m in Regex.Matches(html, @"<tr.+?[\s\S]*?</tr>"))
{
if (m.Length > 2000)
{
Console.WriteLine(m.Length.ToString());
Console.WriteLine(m.Value.ToString());
}
}

已解决...采用正则方式 = =
new_4 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fengyecsdn 的回复:]
System.Net.HttpWebResponse.GetResponseStream()
得到流,然后读出来内容,
可以随便你需要加载成XML或者HTMLDOCUMENT
如果是选择后者你需要点特殊手段,要么用NEW一个WEBBROWSER的方法,或者用 DOMDOCUMENT转换一下.
[/Quote]
能否给出示例代码参考一下 = =
wuhaiwuya 2008-05-27
  • 打赏
  • 举报
回复
可以把html 文件绑定webbrowse 通过form与webborwse交互可以取得
fengyecsdn 2008-05-27
  • 打赏
  • 举报
回复
System.Net.HttpWebResponse.GetResponseStream()
得到流,然后读出来内容,
可以随便你需要加载成XML或者HTMLDOCUMENT
如果是选择后者你需要点特殊手段,要么用NEW一个WEBBROWSER的方法,或者用 DOMDOCUMENT转换一下.
fengyecsdn 2008-05-27
  • 打赏
  • 举报
回复
什么控制台程序? 只要是NET的类库都可以用. 你引用就可以了啊!!!!
又不是叫你在控制台程序里非写出个窗口来. 你用的是类型而已.
我的WINDOWS服务每天抓各种HTML和RSS资料呢.
new_4 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fengyecsdn 的回复:]

参考
HtmlDocument 成员
System.Windows.Forms 命名空间

或者参考
XmlDocument 成员
System.Xml 命名空间
[/Quote]

要写的是本地控制台程序或服务,貌似不能使用HtmlDocument
网页不是我写的,是采集来的,貌似也不能使用XmlDocument

还有其他的方法么?
周公 2008-05-27
  • 打赏
  • 举报
回复
符合XHTML规范的html文件完全可以当作XML文件来操作。
fengyecsdn 2008-05-27
  • 打赏
  • 举报
回复

参考
HtmlDocument 成员
System.Windows.Forms 命名空间

或者参考
XmlDocument 成员
System.Xml 命名空间
fengyecsdn 2008-05-27
  • 打赏
  • 举报
回复
其实这种已经有格式的数据你没必要自己读.
你可以把它加载成 XML文档嘛.
或者对于你这个HTML文件来说 直接加载成 HTMLDOCUMENT.
在NET基础类库中都有这些对象类的.

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧