【发布时间】:2010-07-04 12:40:52
【问题描述】:
我正在使用 HTML Agility 包在 Visual Studio 中解析一个 ASPX 文件。
我正在搜索具有指定 ID 属性的元素。
我使用的代码是:
var html = new HtmlAgilityPack.HtmlDocument();
html.LoadHtml(docText);
if (html.DocumentNode != null)
{
try
{
var tagsWithId = html.DocumentNode.SelectNodes(string.Format("//[@id='{0}']", selector.Id));
但是,当我运行此代码时,它会引发异常“表达式必须计算为节点集”。
谁能告诉我为什么这个“必须”评估为节点集?为什么它不能简单地不返回任何节点(下一行调用 tagsWithId.Count)? SelectNodes方法返回的HtmlNodeCollection肯定可以包含0个节点吧?
或者是由于格式错误的 Xpath 表达式导致的错误? [我正在测试的选择器 ID 肯定存在于文件中,为
是否可以直接从 Visual Studio 加载一个 ASPX 文件(我正在构建一个加载项),或者这是否包含 XML 错误,我是否必须加载输出 HTML 流(即 文件开头没有页面声明,等。)?
【问题讨论】:
-
好问题 (+1)。有关详细说明和要使用的正确 XPath 表达式,请参阅我的答案。 :)
标签: html xpath parsing html-agility-pack