【问题标题】:HtmlAgilityPack & Windows 8 Metro AppsHtmlAgilityPack 和 Windows 8 Metro 应用程序
【发布时间】:2013-04-03 05:16:46
【问题描述】:

我正在尝试让 HtmlAgilityPack 与 Windows 8 Metro 应用程序(Windows 应用商店应用程序)一起使用。我已经成功地在 Windows 控制台应用程序 (C#) 中写出了我需要的所有代码,它非常适合解析我需要的 HTML 并返回我需要的字符串。

// Create a new HtmlDocument and load the incoming string
        HtmlDocument menu = new HtmlDocument();
        menu.OptionUseIdAttribute = true;
        menu.LoadHtml(response);

        HtmlNode nameToRemove = menu.DocumentNode.SelectSingleNode("//*[@id=\"maincontent_0_contentplaceholder_0_lblHall\"]");

我的问题在于DocumentNode.SelectSingleNode 电话。我收到以下错误:

错误 2 'HtmlAgilityPack.HtmlNode' 不包含对 'SelectSingleNode' 和没有扩展方法 'SelectSingleNode' 接受“HtmlAgilityPack.HtmlNode”类型的第一个参数可能是 找到(您是否缺少 using 指令或程序集引用?)

我确认我的所有参考设置都与我在控制台应用程序中的设置完全相同,但无法使其正常工作。根据 HtmlAgilityPack 推特账号,1.4.5 版本增加了对 Windows 8 Metro/Windows Phone 8 的支持。我仔细检查了我的 NuGet 包管理器并安装了 1.4.6。

在 Windows 8 应用程序的 HtmlDocument 中通过XPath 选择节点是否需要做一些特别的事情?任何建议将不胜感激。

谢谢!

编辑:那么任何人都可以帮助我通过 Linq 查询获得相同的结果。我不确定我会怎么做。

【问题讨论】:

标签: c# .net microsoft-metro html-agility-pack windows-console


【解决方案1】:

Html Agility Pack 依赖 .NET 来实现 XPATH。不幸的是,WinRT 不支持 XPATH,因此您在 WinRT 的 Html Agility Pack 中没有任何与 XPATH 相关的内容。

【讨论】:

  • 如果 HtmlAgilityPack 声称支持 Windows 8 Metro(即 .NET WinRT 配置文件),这个答案是正确的,这应该是可能的。我猜这个项目实际上并不支持 Windows 8 ( Windows Store ) 应用程序,尽管它声称它支持。我实际上在项目网站上没有看到这种说法......
  • 它确实支持 WinRT,但您必须使用 XPATH 以外的其他方式,例如 Linq、后代等...
  • 我觉得我脑子有问题,我将 WinRT 视为 Windows RT,而不是 WinRT .NET 配置文件(尽管我在想它)。
  • 你能指导我用 Linq 和 Descendants 编写查询吗?
  • 好吧,至少我知道我自己没有搞砸。改用 LINQ 几乎不是负担。西蒙,我非常感谢你解除了 HTML 解析的恶魔般的负担。 +1 用于编写 HAP。万一没有人告诉你,Nuget 弄错了,你必须删除对 sl4 的引用并改用 sl3 二进制文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 2012-06-29
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多