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合法吗? 是的,了解原因