C # HtmlAgilityPack HtmlNodeCollection SelectNodes не работает

c# html html-agility-pack selectnodes xpath

Вопрос

Это строка кода, который я использую, когда я смотрю в окне просмотра, «c» имеет значение null.

HtmlNodeCollection c = doc.DocumentNode.SelectNodes("//*[@id=\"content\"]/table/tbody/tr[2]/td/center[2]/b");

Но когда я объявляю «c» как это, окно просмотра показывает, что это действительный HtmlNodeCollection

HtmlNodeCollection c = new HtmlNodeCollection(doc.DocumentNode.ParentNode);

Если я затем установил 'c' в первый фрагмент кода, он вернется к нулевому значению.

Я знаю, что XPath верен, поскольку я получил его от элемента Chrome Inspect элемента, который я хочу получить.

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

SelectNodes возвращает null, когда ничего не найдено.

Вы думаете, что ваш XPATH в порядке, потому что вы использовали созданный XPATH браузер (Chrome, Firefox и т. Д.), Но, к сожалению, этот XPATH не совсем такой же, как тот, который вы получили из сети (или файл или необработанный поток) ,

Браузеры полагаются на внутреннюю память DOM, которую они используют внутри, что может быть совершенно иным. Вот почему вы видите такие элементы, как TBODY, которые существуют только в DOM, а не в разметке (где они являются необязательными).

Итак, я предлагаю вам вернуться к строке / потоку, который вы передаете в Html Agility Pack, и снова проверить XPATH. Бьюсь об заклад, нет TBODY, для начала.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow