Frage

Ich bin Parsen eine XML-API-Antwort mit HTMLAgilityPack. Ich bin in der Lage, das Ergebnis Elemente aus dem API-Aufruf zu wählen. Dann habe ich Schleife durch die Elemente und wollen die Childnodes an einen Tisch zu schreiben. Wenn ich wählen Childnodes, indem er sagte so etwas wie:

sItemId = dnItem.ChildNodes(0).innertext

ich das richtige itemId Ergebnis. Aber wenn ich versuche:

sItemId = dnItem.ChildNodes("itemId").innertext

ich "Referiert Objekt einen Wert von 'Nothing' hat."

Ich habe versucht, "itemID [1]", "/ itemId [1]" und ein veriety von Strings. Ich habe versucht, SelectSingleNode und ChildNodes.Item ( "itemId"). Innertext. Der einzige, der gearbeitet hat, ist der Index.

Das Problem des Index mit der Verwendung ist, dass manchmal untergeordnete Elemente in den Ergebnissen weggelassen werden und dass der Index abwerfen.

Jeder weiß, was ich falsch mache?

War es hilfreich?

Lösung

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   
}

ist, der Code zu extrahieren Daten aus einer Tabelle, Zeile für Zeile, indem Zelle pro Zeile verwendet. Ich benutzte die vorhandenen XPath und ich verändert es auf meine Bedürfnisse Acording. Viel Glück!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top