0

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

sItemId = dnItem.ChildNodes(0).innertext

適切な itemId の結果が得られます。しかし、私がしようとすると:

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

「参照されたオブジェクトの値は 'Nothing' です」というメッセージが表示されます。

「itemID[1]」、「/itemId[1]」、およびさまざまな文字列を試しました。SelectSingleNode と ChildNodes.Item("itemId").innertext を試しました。機能した唯一のものは、インデックスを使用することです。

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

私が間違っていることを知っている人はいますか?

4

1 に答える 1

1
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を使用し、必要に応じて変更しました。幸運を!

于 2010-03-12T15:32:31.287 に答える