Estoy analizando una respuesta API XML con HTMLAgilityPack. Puedo seleccionar los elementos de resultado de la llamada a la API. Luego recorro los elementos y quiero escribir los ChildNodes en una tabla. Cuando selecciono ChildNodes diciendo algo como:
sItemId = dnItem.ChildNodes(0).innertext
Obtengo el resultado itemId apropiado. Pero cuando lo intento:
sItemId = dnItem.ChildNodes("itemId").innertext
Obtengo "El objeto referenciado tiene un valor de 'Nada'".
He intentado "itemID [1]", "/ itemId [1]" y una variedad de cadenas. He intentado SelectSingleNode y ChildNodes.Item ("itemId"). Innertext. El único que ha funcionado es usar el índice.
El problema con el uso del índice es que a veces se omiten elementos secundarios en los resultados y eso elimina el índice.
¿Alguien sabe lo que estoy haciendo mal?
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(@webHTMLeditor.TextXhtml);
HtmlNodeCollection tableRows = htmlDoc.DocumentNode.SelectNodes("//tr");
for (int i = 0; i < tableRows.Count; i++)
{
HtmlNode tr = tableRows[i];
HtmlNode[] td = new HtmlNode[2];
string xpath = tr.XPath + "//td";
HtmlNodeCollection cellRows = tr.SelectNodes(@xpath);
//td[0] = tr.ChildNodes[1];
//td[1] = tr.ChildNodes[3];
try
{
td[0] = cellRows[0];
td[1] = cellRows[1];
}
catch (Exception)
{ }
//etc
}
El código se utiliza para extraer datos de una tabla, fila por fila, por celda por fila. Utilicé el xpath existente y lo modifiqué según mis necesidades. ¡Buena suerte!