HtmlAgilityPack использует Linq для платформы Windows Phone 8.1

c# html-agility-pack linq windows-phone-8.1

Вопрос

Поскольку HtmlAgilityPack еще не поддерживается в Windows Phone 8.1, ссылка вручную в проекте была хитроумным решением. Но это не единственная проблема. Я мог бы использовать XPath для моего прошлого проекта для выбора узлов. Теперь я вижу, что HtmlDocumentNode.SelectNode() больше не существует (из-за совместимости версий).

то, что я использовал в моем прошлом проекте, было похоже на это

HtmlNode parent = document.DocumentNode.SelectSingleNode("//ul[@class='songs-list1']");
HtmlNodeCollection x = parent.ChildNodes;

Я искал stackoverflow и google и получил Идею, что по-прежнему можно выбирать узлы с помощью Linq.

Я ищу блок кода, который будет работать как SelectNodes , SelectNode .

Загрузка HtmlDocument будет оценена по достоинству.

Принятый ответ

Если вы хотите перевести свой текущий код, который использует XPath для использования LINQ, тогда это будет делать:

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

Но если вы ожидаете найти методы, которые принимают XPath в версии HtmlAgilityPack для универсальных приложений Windows Phone 8.1 или Windows RT (« Я ищу блок кода, который будет работать как SelectNodes , SelectNode »), вам лучше не делать этого: HtmlAgilityPack И Windows 8 Metro Apps (ответ автора HAP).


Популярные ответы

Вы можете сделать это, используя метод 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>"

и он получит узел <h6> с классом-списком песен.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему