C# HtmlAgilityPack使用Linq for windows phone 8.1平台

C# HtmlAgilityPack使用Linq for windows phone 8.1平台,c#,linq,html-agility-pack,windows-phone-8.1,C#,Linq,Html Agility Pack,Windows Phone 8.1,由于WindowsPhone8.1还不支持HtmlAgilityPack,因此在项目中手动引用是一个巧妙的解决方案。但这不是唯一的问题。我可以对我过去的项目使用XPath来选择节点。现在我可以看到HtmlDocumentNode.SelectNode()函数已经不存在了(因为可能存在版本兼容性) 我在过去的项目中使用的与此类似 HtmlNode parent = document.DocumentNode.SelectSingleNode("//ul[@class='songs-list1']"

由于WindowsPhone8.1还不支持HtmlAgilityPack,因此在项目中手动引用是一个巧妙的解决方案。但这不是唯一的问题。我可以对我过去的项目使用
XPath
来选择节点。现在我可以看到
HtmlDocumentNode.SelectNode()
函数已经不存在了(因为可能存在版本兼容性)

我在过去的项目中使用的与此类似

HtmlNode parent = document.DocumentNode.SelectSingleNode("//ul[@class='songs-list1']");
HtmlNodeCollection x = parent.ChildNodes;
我搜索了stackoverflow和google,发现仍然可以使用Linq选择节点

我正在寻找一个类似于
SelectNodes
SelectNode
的代码块


异步加载
HtmlDocument
将不胜感激。

您可以使用Element/s方法:

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(htmlString);
        var h6Nodes = from h6element in doc.DocumentNode.Element("body").Element("center").Elements("h6")
                      where h6element.Attributes["class"].Value.Equals("songs-list")                      
                      select h6element;
这是假设你有

string htmlString = @"<html>
<body>
<center>
<h6>Hello  </h6>
<h6>World!   </h6>
<h6 class=""songs-list"">
Insert that one song here
</h6>
</center>
</body>
</html>"
string htmlString=@”
你好
世界!
在这里插入那首歌
"

这将获得带有类歌曲列表的
节点。

如果您想将使用XPath的当前代码转换为使用LINQ的代码,则可以执行以下操作:

HtmlNode parent = document.DocumentNode
                          .Descendants("ul")
                          .FirstOrDefault(o => o.GetAttributeValue("class", "") 
                                                   == "songs-list1")
HtmlNodeCollection x = parent.ChildNodes;

但是,如果您希望在WindowsPhone8.1UniversalApps或WindowsRT的HtmlAgilityPack版本中找到接受XPath的方法(“我正在寻找一段类似于
SelectNodes
SelectNode
”)的代码,那么您最好不要:(由HAP的作者回答)。

您能告诉我“body”和“center”是什么吗参数做了什么?这些只是示例标记!在您的情况下,它将是元素(“ul”),什么是
null
<代码>父项是否为空?尝试保存您的
HtmlDocument
,并查看它是否实际具有
这样的
class
属性。yes parent为null。我确定节点和它的类名。请检查/调试。不要猜测,因为我对这段代码也很确定,即使在我使用包含
的简单HTML进行测试时,它也运行良好。或者发布你的HTML,这样我们就可以确认这段代码是否有效。好的,基本上我正在尝试解析这个网站,并尝试获取专辑更新部分的列表。请自己检查一下。仅供参考,我使用了这两行代码来获取“HTML文档”HtmlDocument DOCUMENT=new HtmlDocument();document.LoadHtml(最新新闻URL);