我正在将XPath查询转换为LINQ ... 使用NuGet的HtmlAgilityPack和Xamarin来解析网页。 问题是我不能在Xamarin中使用XPath,因为它不受NuGet包的支持,因为我没有编译我自己的HtmlAgilityPack.dll的许可,所以我必须使用LINQ。
以下XPath查询是我尝试转换为LINQ的内容:
doc.DocumentNode.SelectNodes("//table[@id='bodyContent_gridHundar']//tr[descendant::td and not(@class='pagestyle')]")
提前致谢!
更新了正确答案!
doc.DocumentNode.Descendants ("table")
.Where (o => o.GetAttributeValue ("id", "") == "bodyContent_gridHundar")
.First ()
.Descendants ("tr")
.Where (o => o.Descendants ("td").Any () && o.GetAttributeValue ("class", "") != "pagestyle");
答案 0 :(得分:1)
您可以尝试这种方式:
doc.DocumentNode
// '//table' :
.Descendants("table")
// '[@id='bodyContent_gridHundar']' :
.Where(o => o.GetAttributeValue("id", "") == "bodyContent_gridHundar")
// '//tr' :
.Descendants("tr")
// '[descendant::td and not(@class='pagestyle')]' :
.Where(o => o.Descendants("td").Any() && o.GetAttributeValue("class", "") != "pagestyle")