C# 使用XpathNavigator和HtmlAlityPack查找InnerHtml值
test.xml的一部分C# 使用XpathNavigator和HtmlAlityPack查找InnerHtml值,c#,html-agility-pack,xpathnavigator,C#,Html Agility Pack,Xpathnavigator,test.xml的一部分 <tr class="a"> <td align="left" nowrap="true">desc1</td> <td align="left">desc2</td> <td>desc3</td> <td align="left">desc4</td> <td align="left">desc5
<tr class="a">
<td align="left" nowrap="true">desc1</td>
<td align="left">desc2</td>
<td>desc3</td>
<td align="left">desc4</td>
<td align="left">desc5</td>
<td>desc6</td>
<td>desc7</td>
<td>desc8</td>
<td class="nr">desc9</td>
</tr>
调试器显示,可以按如下方式计算值,这非常麻烦
((HtmlAgilityPack.HtmlNodeNavigator)((new System.Linq.SystemCore_EnumerableDebugView(((MS.Internal.Xml.XPath.XPathSelectionIterator)(o)))).Items[0])).Value
到达desc9的最佳方式是什么?类似以下内容:
/table[1]/tbody[1]/tr[@class="a"]/td[last()]
看一看我没有使用XPathNavigator,但这里有一个类似的解决方案,它具有SelectNodes/SelectSingleNode样式和HTML敏捷包
string xPathSearch = "/table[1]/tbody[1]/tr[2]";
HtmlNode tableRow = doc.DocumentNode.SelectSingleNode(xPathSearch);
string description9 = tableRow.ChildNodes[9].InnerText;
或
仅供参考-HTML敏捷包上最好的文档似乎是源代码中包含的示例。不知道为什么文档中没有单独的下载 我认为你做得不对 我相信你所需要做的就是:
document.DocumentNode.SelectSingleNode("/table[1]/tbody[1]/tr[2]/td[9]");
我找不到可供您链接的在线文档副本,但您可以查看在中找到的文档以了解更多详细信息
另外,如果您只是在阅读XML,那么您使用html agility pack的原因是什么,还是只有您的测试文件才是有效的XML?我必须使用tableRow.ChildNodes[17].InnerText,因为“\r\n”也被用作子节点。谢谢
string xPathSearch = "/table[1]/tbody[1]/tr[2]/td[9]";
HtmlNode tableColumn = doc.DocumentNode.SelectSingleNode(xPathSearch);
string description9 = tableColumn.InnerText;
document.DocumentNode.SelectSingleNode("/table[1]/tbody[1]/tr[2]/td[9]");