由于“bug in.net”通常不是问题的真正原因,我想知道我是否遗漏了一些东西。
我做的事情感觉很简单。我正在迭代
HtmlDocument
打电话
doc
这样地:
System.Diagnostics.Debug.WriteLine("*** " + doc.Url + " ***");
foreach (HtmlElement field in doc.All)
System.Diagnostics.Debug.WriteLine(string.Format("Tag = {0}, ID = {1} ", field.TagName, field.Id));
然后我发现调试窗口输出如下:
Tag = !, ID =
Tag = HTML, ID =
Tag = HEAD, ID =
Tag = TITLE, ID =
Tag = LINK, ID =
…当实际的HTML文档如下所示时:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Protocol</title>
<link rel="Stylesheet" type="text/css" media="all" href="ProtocolStyle.css">
</head>
<body onselectstart="return false">
<table>
<!-- Misc. table elements and cell values -->
</table>
</body>
</html>
评论
LINK
标签为我解决了这个问题,并且文档被完全解析。这个
ProtocolStyle.css
文件存在于磁盘上,并正确加载(如果这很重要的话)。这是.NET 3.5 SP1中的错误,还是什么?作为一个面向Web的框架,我很难相信它会有这样一个主要的缺陷。
更新:
顺便说一下,这个迭代是在WebBrowser控件的Navigated事件中完成的。