Как получить элемент в HtmlAgilityPack

136
19 декабря 2019, 22:50

Есть html, который я хочу распарсить.

<li data-accordion-plus="false" ....

Как получить данные внутри этого тега?

var items = doc.DocumentNode.SelectNodes("//li[???()='data-accordion-plus']").ToList();
Answer 1

Вам не надо нечего писать лишнего в Xpath, просто укажите элемент с именем нужного атрибута.

Например имеем простой HTML:

<html>
    <body>
        <ul>
          <li data-accordion-plus="false">1</li>
          <li>2</li>
          <li data-accordion-plus="true">3</li>
          <li>4</li>
        </ul>
    </body>
</html>

Далее нам нужно например получить все li с атрибутом data-accordion-plus, мы пишем:

var liNodes = htmlDoc.DocumentNode.SelectNodes("//li[@data-accordion-plus]");

В liNodes у нас будет 2 объекта. Выведем из них в консоль значения:

foreach (var node in liNodes)
    Console.WriteLine($"{node.InnerText.Trim()} | {node.GetAttributeValue("data-accordion-plus", false)}");

Результат:

1 | False
3 | True

READ ALSO
Добавление элементов Windows Form программно

Добавление элементов Windows Form программно

В принципе простые элементы добавления мне известныТипа:

166
C# WPF Убрать из RichTextBox перевод строки

C# WPF Убрать из RichTextBox перевод строки

Как убрать из RichTextBox отступ в конце строки?

154
Как парсить данные в несколько потоков?

Как парсить данные в несколько потоков?

Есть chromedriverЯ хочу запустить его в 3 потока и слать данные этим инстансам из списка

133
Проверить пронумерован ли список С# Word

Проверить пронумерован ли список С# Word

Мне нужно получается подать Word файлИ в параграфе "Библиографический список" (а там их будет много) проверить следующее:

175