HTMLAgilityPack ChildNodes索引有效,命名节点没有

时间:2010-03-11 19:31:17

标签: 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。唯一有效的是使用索引。

使用索引的问题在于,有时会在结果中省略子元素并抛弃索引。

有人知道我做错了吗?

1 个答案:

答案 0 :(得分: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,并根据我的需要对其进行了修改。 祝你好运!