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
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因