質問: Tengo el diseño HTML actual ``` //table[1] //table[2] //table[1]//table[1] INFO 1 INFO 2 INFO 3 INFO 4 //table[1]//table[2] Name Quantity Apples 10 //table[1]//table[3] ``` Estoy tratando de obtener los datos dentro de `//table[1]//table[2]` , pero sigo obteniendo un HtmlNode nulo ( `System.NullReferenceException` ) para lo siguiente: **no funciona:** `doc.DocumentNode.SelectSingleNode("//table[2]//tbody//tr//td//table[2]//tbody//tr");` , No estoy seguro de por qué ocurre esto ya que cuando trato de obtener datos para `//table[1]//table[1]` funciona bien con esta sintaxis **works:** `doc.DocumentNode.SelectSingleNode("//table[2]//tbody//tr//td//table[1]//tbody//tr");` ¿Estoy malinterpretando cómo funciona la indexación con Html Agility Pack?
回答: `//table[2]` devuelve el elemento 2nd `` dentro **del mismo padre** porque en XPath: > El ( `]` ) tiene una prioridad (prioridad) más alta que ( `//` y `/` ). [ [Para referencia ] > > En su caso, solo hay una `` en cada `` , por lo tanto, la expresión Xpath no devolvió nada. Una posible solución es poner corchetes para alterar la prioridad: ``` (//table[2]//tbody//tr//td//table)[2]//tbody//tr ``` Por encima de Xpath, obtenga el segundo elemento `` de todas las `` devueltas por la `//table[2]//tbody//tr//td//table` interna XPath `//table[2]//tbody//tr//td//table` . Luego, desde esa `` , continúe devolviendo los descendientes `//tbody//tr` elementos.