2

我试图解析的一段 HTML 包含一些不带引号的属性值,例如宽度和高度属性:

<img src="/static/logo.png" width=75 height=90 />

在 C# 代码中,阅读器会一直读取到下一个锚标记。

while (reader.ReadToFollowing("a"))

此语句报告 XmlException:

'75' is an unexpected token. The expected token is '"' or '''. Line 16, position 37.

是否有一些 XmlReaderSetting 使 XmlReader 更宽松?我无法控制生成的 HTML。

4

2 回答 2

6

为了阅读 HTML,您需要为此目的设计的阅读器。HtmlAgilityPack可以在这里为您提供帮助,相关问题的答案中提到的SgmlReader也可以。

HTML不是XML。它们都基于SGML,但遵循不同的规则。XML 具有比 HTML 更严格的规则,其中包括需要关闭所有标签以及用单引号或双引号将属性括起来。因此,除非您正在解析符合 XML 的 XHTML,否则 XmlReader 将无法为您工作。

于 2012-08-13T14:12:59.507 回答
3

您也可以使用 WebBrowser 控件。将文件加载到其中并从 WebBrowser.Document 属性中获取 HtmlDocument。然后,您可以循环通过控件。

于 2012-08-13T14:22:08.153 回答