C # HtmlAgilityPack HtmlNodeCollection SelectNodes no funciona

c# html html-agility-pack selectnodes xpath

Pregunta

Esta es la línea de código que estoy usando, cuando miro en la ventana del reloj, 'c' es nulo.

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

Pero cuando declaro 'c' como esto, la ventana de visualización muestra que es una colección HtmlNodeCollection válida

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

Si luego pongo 'c' en el primer fragmento de código, vuelve a ser nulo.

Sé que la XPath es correcta, ya que la obtuve del Elemento de inspección de Chrome del elemento que deseo obtener.

Respuesta popular

SelectNodes devuelve nulo cuando no se ha encontrado nada.

Piensas que tu XPATH está bien porque usaste un XPATH construido en un navegador (Chrome, Firefox, etc.), pero desafortunadamente, este XPATH no es exactamente el mismo que el que obtuviste de la red (o un archivo, o una transmisión sin formato) .

Los navegadores se basan en el DOM en memoria que usan internamente, que puede ser dramáticamente diferente. Es por eso que ves elementos como TBODY que solo existen en DOM, no en el marcado (donde son opcionales).

Por lo tanto, te sugiero que vuelvas a la secuencia / secuencia que le das al paquete de agilidad de HTML y compruebes ese XPATH nuevamente. Apuesto a que no hay TBODY, para empezar.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué