使用HtmlAgilityPack获取最后一个<;tr>;html表的

使用HtmlAgilityPack获取最后一个<;tr>;html表的,html,html-table,html-agility-pack,Html,Html Table,Html Agility Pack,我有一个html表格结构。我需要在最后的标记中获取第一个的值。这是我的桌子结构。下面的函数getFinalNodeValue需要的值是“3” 身份证件 名称 年龄 1. 苏达 21 2. 萨曼莎 25 3. 萨吉 26 下面是我使用HtmlAgilityPack编写的代码 public String getFinalNodeValue(String URL) { var webGet = new HtmlWeb(); var

我有一个html表格结构。我需要在最后的
标记中获取第一个
的值。这是我的桌子结构。下面的函数getFinalNodeValue需要的值是“3


身份证件
名称
年龄
1.
苏达
21
2.
萨曼莎
25
3.
萨吉
26

下面是我使用HtmlAgilityPack编写的代码

 public String getFinalNodeValue(String URL)
        {
            var webGet = new HtmlWeb();
            var pageSource = webGet.Load(URL);

            var table = pageSource.DocumentNode.SelectSingleNode("//table[@id='test']//tr[1]");


            string id = null;


            IEnumerable<HtmlNode> trNodes = table.DescendantsAndSelf();

            foreach (var currentItem in trNodes)
            {
                if (currentItem == trNodes.Last())
                {
                    IEnumerable<HtmlNode> tdNodes = currentItem.Descendants();

                    foreach (var x in tdNodes)
                    {
                        if(x == tdNodes.First())
            {
                id = x.InnerText;
            }
            else
            {
                break;
            }
                    }

                }
                else
                {
                    continue;
                }
            }

            return id;

        }
公共字符串getFinalNodeValue(字符串URL)
{
var webGet=new HtmlWeb();
var pageSource=webGet.Load(URL);
var table=pageSource.DocumentNode.SelectSingleNode(//table[@id='test']//tr[1]”);
字符串id=null;
IEnumerable trNodes=table.degenantsandself();
foreach(trNodes中的var currentItem)
{
if(currentItem==trNodes.Last())
{
IEnumerable tdNodes=currentItem.subjects();
foreach(tdNodes中的var x)
{
if(x==tdNodes.First())
{
id=x.InnerText;
}
其他的
{
打破
}
}
}
其他的
{
持续
}
}
返回id;
}

该方法不返回值。非常感谢您的帮助。

您用来填充
变量-
“//表[@id='test']//tr[1]”
,选择第二个
tr
元素,而不是表中的元素

这很可能是
“//table[@id='test']”

此时,要将子体
TR
节点提取到
trNodes
变量中,应使用:

IEnumerable<HtmlNode> trNodes = table.SelectNodes("tr");
IEnumerable trNodes=table.SelectNodes(“tr”);

用于填充
变量-
“//table[@id='test']//tr[1]”
的XPath选择第二个
tr
元素,而不是表

这很可能是
“//table[@id='test']”

此时,要将子体
TR
节点提取到
trNodes
变量中,应使用:

IEnumerable<HtmlNode> trNodes = table.SelectNodes("tr");
IEnumerable trNodes=table.SelectNodes(“tr”);

如果您这样更改表格:

<table id="test" runat="server">
HtmlTable myTable = this.test;
int rowCount = myTable.Rows.Count;
HtmlTableCell td = myTable.Rows(rowCount - 1).Cells(0);
string val = td.InnerText;

如果您这样更改表格:

<table id="test" runat="server">
HtmlTable myTable = this.test;
int rowCount = myTable.Rows.Count;
HtmlTableCell td = myTable.Rows(rowCount - 1).Cells(0);
string val = td.InnerText;
这应该做到:

    HtmlDocument doc = new HtmlDocument();
    doc.Load(MyHtmlFile);

    HtmlNode node = doc.DocumentNode.SelectSingleNode("//table[@id='test']/tr[last()]/td");
    Console.WriteLine(node.InnerText);
请注意该功能的用法

这应该可以做到:

    HtmlDocument doc = new HtmlDocument();
    doc.Load(MyHtmlFile);

    HtmlNode node = doc.DocumentNode.SelectSingleNode("//table[@id='test']/tr[last()]/td");
    Console.WriteLine(node.InnerText);

注意函数的用法

非常感谢Simon:)这很有效。这是一个更简单的方法。非常感谢:)泰回答了我要找的问题:D汉克斯:非常感谢西蒙:)这很有效。这是一个更简单的方法。非常感谢:)泰回答了我要找的问题:d