Estoy tratando de obtener solo algunas celdas específicas en cada fila usando HTMLAgilityPack.
foreach (HtmlNode row in ContentNode.SelectNodes("descendant::tr"))
{
//Do something to first cell
//Do something to second cell
}
Hay más células, y cada célula necesita algún tratamiento especializado. Supongo que hay una manera de hacer esto usando XPath, pero soy bastante inútil en eso. Hay tal vez algo como
var cell1 = row.SelectSingleNode("descendant::td:first");
Para obtener cada primera celda que sea un hijo de una fila, puede hacer lo siguiente:
// from row
var firstCell = row.SelectSingleNode("td[1]");
// each first cell in a table (note: tbody is not always there)
var allFirstCells = table.SelectNodes("tbody/tr/td[1]");
En otras palabras, use corchetes y el número de celda que desea seleccionar. Una excepción es la última celda, que puede obtener usando last()
siguiente manera:
// from row
var lastCell = row.SelectSingleNode("td[last()]");
// each last cell in a table
var allLastCells = table.SelectNodes("tbody/tr/td[last()]");
Si desea obtener la celda junto a una celda actual, puede hacer algo como esto:
// from row
var firstCell = row.SelectSingleNode("td[1]");
var siblingCell = firstCell.SelectSingleNode("./following-sibling::td");
Es posible que desee verificar los valores de retorno en nulo, lo que significa que tiene un error tipográfico o que el árbol DOM que cargó no contiene la celda que solicitó.
En lugar de
descendant::tr
uso :
descendant::tr/td[not(position() >2)]