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 回答