XmlReader:麻烦解析没有引号的属性

时间:2012-08-13 14:11:20

标签: c# xml-parsing html-parsing

我正在尝试解析的一段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。

2 个答案:

答案 0 :(得分:6)

为了阅读HTML,您需要一个专为此目的而设计的阅读器。 HtmlAgilityPack可以为您提供帮助,SgmlReaderthis answer中提及的a related question也可以为您提供帮助。

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

答案 1 :(得分:3)

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