HTML 애자일 팩의 도움으로 datagridview에 HTML 테이블을 구문 분석하기위한 간단한 응용 프로그램을 작성했습니다. 하지만 코드를 실행하면 "이 행은 이미이 테이블에 속해 있습니다"라는 오류가 발생합니다.
아래의 간단한 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 팩으로 어떻게이 작업을 수행 할 수 있습니까?
다음 줄을 이동하십시오.
dt.Rows.Add(dr);
테이블 셀 위의 foreach 루프 바깥 쪽. 동일한 행을 DataTable에 여러 번 추가하려고합니다.
int i = 0;
foreach (var cell in row.SelectNodes("//td"))
{
dr[i++] = cell.InnerText;
}
dt.Rows.Add(dr);