如何在Windows Phone 8.1上使用HtmlAgilityPack?

时间:2014-09-28 15:49:58

标签: c# windows-store-apps html-agility-pack

我使用HtmlAgilityPack为Windows Phone 8.1构建了一个应用程序的快速C#/ Mono原型。

将此代码转换为WP8.1和官方.Net for Windows Store变得非常麻烦。我想要的只是获取所有td节点,其中包含" column3"的类。我该怎么做?对于我的非商店原型,使用SelectNodes可以正常工作。

现在我了解到,对于Windows应用商店应用,缺少SelectNodes和SelectSingleNode。然而,我的问题是使用l​​inq和Decendants的建议替代方案也不起作用。

我当然用Google搜索,但由于某种原因,所有结果都包含以下内容之一或其变体。

到目前为止我已尝试过:

var hits = doc.DocumentNode.SelectNodes("//td[@class=\"column3\"]");
//SelectNodes is undefined

var hits = doc.DocumentNode.DescendantsAndSelf("td").Where(x => x.Name.ToLower() =="td"); 
//Where() is undefined

HtmlNode parent = doc.DocumentNode
                      .Descendants("ul")
                      .FirstOrDefault(o => o.GetAttributeValue("class", "") 
                                               == "songs-list1");
//doesn't do what i want it to, but FirstOfDefault is undefined

1 个答案:

答案 0 :(得分:0)

我怀疑你错过了所需的使用声明。以下内容应返回属性<td>等于class的所有"column3"个节点:

using System.Linq;
.......
var hits = doc.DocumentNode
              .Descendants("td")
              .Where(o => o.GetAttributeValue("class", "") 
                                    == "column3")
              .ToList();