-1
我使用HTML Agility pack的帮助编写了一个简单的应用程序,用于将HTML表解析为datagridview。但是当我运行的代码,它扔我一个错误“该行已经属于该表”使用HTML Agility包将HTML表添加到datagridview
我需要解析简单的HTML表像下面
<html>
<head>
</head>
<body>
<table>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
</table>
</body>
</html>
这是我的代码
private void button1_Click(object sender, EventArgs e)
{
var htmlCode = richTextBox1.Text.Trim();
var doc = new HtmlDocument();
doc.LoadHtml(htmlCode);
dt = new DataTable();
dt.Columns.Add("Company", typeof (string));
dt.Columns.Add("Contact", typeof (string));
dt.Columns.Add("Country", typeof (string));
var count = 0;
foreach (var table in doc.DocumentNode.SelectNodes("//table"))
{
foreach (var row in table.SelectNodes("//tr"))
{
var dr = dt.NewRow();
var i = 0;
foreach (var cell in row.SelectNodes("//td"))
{
dr["Company"] = cell.InnerText.Replace(" ", "");
dr["Contact"] = cell.InnerText.Replace(" ", "");
dr["Country"] = cell.InnerText.Replace(" ", "");
}
dt.Rows.Add(dr);
}
grid.DataSource = dt;
}
}
我需要datagridview的一个简单的输出这样
如何使用HTML Agility Pack做到这一点?
谢谢你解决方案修复我提到的问题。但现在它只打印所有领域的最后值(德国)。 –
这就是你的代码所做的。只要看看它... – NineBerry
你能告诉我为什么会发生这种情况?我对此很陌生。谢谢 –