我正在使用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。唯一有效的是使用索引。
使用索引的问题在于,有时会在结果中省略子元素并抛弃索引。
有人知道我做错了吗?
答案 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,并根据我的需要对其进行了修改。 祝你好运!