C# 使用XpathNavigator和HtmlAlityPack查找InnerHtml值

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

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</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]");