HTMLAgilityPack ChildNodesインデックスが動作します。名前付きノードは動作しません。

html-agility-pack selectsinglenode

質問

私はHTMLAgilityPackでXML APIの応答を解析しています。私は、API呼び出しから結果項目を選択することができます。次に、アイテムをループしてChildNodesをテーブルに書きたいと思います。 ChildNodesを次のように言って選択すると、

sItemId = dnItem.ChildNodes(0).innertext

私は適切なitemId結果を取得します。しかし私が試みるとき:

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

私は "Referencedオブジェクトは 'Nothing'という値を持っています。"

私は "itemID [1]"、 "/ itemId [1]"と文字列の欲望を試しました。 SelectSingleNodeとChildNodes.Item( "itemId")。innertextを試しました。唯一働いているのはインデックスを使用することだけです。

インデックスを使用する際の問題は、子要素が結果では省略され、インデックスをスローすることがあることです。

誰かが私が間違っていることを知っている?

受け入れられた回答

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   
}

このコードは、行ごとに、行ごとのセルごとに、表からデータを抽出するために使用されます。私は既存のXPathを使用し、私はそれを自分のニーズに合わせて変更しました。がんばろう!



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow