C# - 在html中获取tr的值

时间:2016-05-01 15:35:03

标签: c#

我用以下代码开始我的代码:

        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>

我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

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;
    }
}