【问题标题】:C# - Get value of tr in htmlC# - 在 html 中获取 tr 的值
【发布时间】:2016-05-02 00:29:38
【问题描述】:

我的代码开头是:

        private int GetSizeOf(IEnumerable<HtmlNode> tables)
        {
            int size = 0;
            var infos = tables.ElementAt(0).Elements("td");
            foreach (var info in infos)
                size++;
            return (size);
        }

        private void saveButton_Click(object sender, EventArgs e)
        {
            var doc = new HtmlAgilityPack.HtmlDocument();
            doc.Load(tooltip.GetToolTip(labelFile));
            var element = doc.DocumentNode
                             .Element("html")
                             .Element("body")
                             .Element("div")
                             .Element("center");
            var tables = element.Elements("table").ElementAt(2).Elements("tr");
            arrayInfos = new string[GetSizeOf(tables), tables.Count()];
        }

我想在 html 中获取表 (td) 的值,我还想将所有值存储在一个多维数组中 (display_name (0.x)、pseudo (1.x)、age (2.x)、已确认 (3.x)、管理员 (4.x))
html 代码如下所示:

<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="80%">
<tr>
    <td nowrap bgcolor="#FFFFCE"><b><font color="#DC883D">display_name</font></b></td>
    <td nowrap bgcolor="#FFFFCE"><b><font color="#DC883D">pseudo</font></b></td>
    <td nowrap bgcolor="#FFFFCE"><b><font color="#DC883D">age</font></b></td>
    <td nowrap bgcolor="#FFFFCE"><b><font color="#DC883D">confirmed</font></b></td>
    <td nowrap bgcolor="#FFFFCE"><b><font color="#DC883D">admin</font></b></td>
</tr>
<tr>
    <td bgcolor="#FFF7F2">Example</td>
    <td bgcolor="#FFF7F2">Example</td>
    <td bgcolor="#FFF7F2">20</td>
    <td bgcolor="#FFF7F2">1</td>
    <td bgcolor="#FFF7F2">0</td>
</tr>

我该怎么做?

【问题讨论】:

标签: c#


【解决方案1】:
var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(...);

var element = doc.DocumentNode
    .Element("html")
    .Element("body")
    .Element("div")
    .Element("center");

var trs = element.Element("table").Elements("tr").ToArray();
var array = new string[trs.Length, trs[0].Elements("td").Count()];

for (int row = 0; row < trs.Length; row++)
{
    var tds = trs[row].Elements("td").ToArray();

    for (int col = 0; col < tds.Length; col++)
    {
        array[row, col] = tds[col].InnerText;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多