我正在尝试解析的一段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。
答案 0 :(得分:6)
为了阅读HTML,您需要一个专为此目的而设计的阅读器。 HtmlAgilityPack可以为您提供帮助,SgmlReader至this answer中提及的a related question也可以为您提供帮助。
HTML不是XML。它们都基于SGML,但遵循不同的规则。 XML具有比HTML更严格的规则,其中包括需要关闭所有标记以及用单引号或双引号包围的属性。因此,除非您正在解析符合XML的XHTML,否则XmlReader将无法为您工作。
答案 1 :(得分:3)
您也可以使用WebBrowser控件。将文件加载到其中并从WebBrowser.Document属性获取HtmlDocument。然后,您可以循环控制。