2015-12-26 3 views
0


C# - HtmlAgilityPack
- Я хочу, чтобы экстракт определенного содержания из HTML таблицы (Не извлекать всю таблицу содержимого) Использование HtmlAgilityPack (шоу рис) и Вставить в dataGridView1 (показать код с #)
+
- Переключение порядка cOLUMN2 в колонка3 (Показать ПИК)Extract конкретное содержание из HTML таблицы с C# - HtmlAgilityPack

= + = + = + = +
Показать ПИК это то, что я хочу
=> Click show pic

= + = + = + = + = + = + = + = +
мой тестовый код (не хороший код) этот код извлечь все содержимое
= + = + = + = +

// Clear Datagridview 
dataGridView1.DataSource = null; 
HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument(); 
// Load a file 
html.Load(@test.html); 
var headers = html.DocumentNode.SelectNodes("//p[4]/table[1]/tr[1]/th"); 
DataTable table = new DataTable(); 
// Create columns from th 
foreach (HtmlNode header in headers) 
{ 
    table.Columns.Add(header.InnerText); 
} 
// Select rows with td elements 
foreach (var row in html.DocumentNode.SelectNodes("//p[4]/table[1]/tr[td]")) 
{ 
    table.Rows.Add(row.SelectNodes("td").Select(td => td.InnerText).ToArray()); 
} 
// Show Result 
dataGridView1.DataSource = table; 


= + = + = + = + = + = + = + = +
кодовой страницы Html
= + = + = + = +

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 

 
<head> 
 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
 

 
</head> 
 

 
<body> 
 

 
<center><font size="+2">Title_Test Title_Test</font></center> 
 
<p><font size="+1"><b><span class="yyyyyy">2_Title_test&nbsp;</span><font color="#000000">NAME 
 
PROJET</font></b></font></p> 
 
<p> 
 
<table> 
 
\t <tr> 
 
\t \t <td><b>Testtable</b></td> 
 
\t \t <td>:</td> 
 
\t \t <td>oo</td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td><b>Testtable2TesttableTesttable</b></td> 
 
\t \t <td>:</td> 
 
\t \t <td>uu</td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td><b>Testtable3</b></td> 
 
\t \t <td>:</td> 
 
\t \t <td>iii</td> 
 
\t </tr> 
 
</table> 
 
</p> 
 
<p><font size="+1"><b><a name="GGGGGGGGG"></a>InfoTest_InfoTest_InfoTest</b></font></p> 
 
<p><b>testtesttesttesttesttesttesttesttesttest </b>.<br /> 
 
<table border="1" bordercolor="#808080" cellpadding="2"> 
 
\t <tr valign="center"> 
 
\t \t <th align="middle">Column0</th> 
 
\t \t <th align="middle">Column1</th> 
 
\t \t <th align="middle">Column2</th> 
 
\t \t <th align="middle">Column3</th> 
 
\t \t <th align="middle">Column4</th> 
 
\t \t <th align="middle">Column5</th> 
 
\t \t <th align="middle">Column6</th> 
 
\t \t <th align="middle">Column7</th> 
 
\t </tr> 
 
\t <tr valign="center"> 
 
\t \t <td align="left">pola</td> 
 
\t \t <td align="right">111</td> 
 
\t \t <td align="right">po111</td> 
 
\t \t <td align="right">1111</td> 
 
\t \t <td align="right">po1111</td> 
 
\t \t <td align="right">NN</td> 
 
\t \t <td align="right">VV</td> 
 
\t \t <td align="right">NV</td> 
 
\t </tr> 
 
\t <tr valign="center"> 
 
\t \t <td align="left">yato</td> 
 
\t \t <td align="right">222</td> 
 
\t \t <td align="right">ya222</td> 
 
\t \t <td align="right">2222</td> 
 
\t \t <td align="right">ya2222</td> 
 
\t \t <td align="right">NN</td> 
 
\t \t <td align="right">VV</td> 
 
\t \t <td align="right">NV</td> 
 
\t </tr> 
 
\t <tr valign="center"> 
 
\t \t <td align="left">romaz</td> 
 
\t \t <td align="right">333</td> 
 
\t \t <td align="right">ro333</td> 
 
\t \t <td align="right">3333</td> 
 
\t \t <td align="right">ro3333</td> 
 
\t \t <td align="right">NN</td> 
 
\t \t <td align="right">VV</td> 
 
\t \t <td align="right"></td> 
 
\t </tr> 
 
\t <tr valign="center"> 
 
\t \t <td align="left">anik</td> 
 
\t \t <td align="right">444</td> 
 
\t \t <td align="right">an444</td> 
 
\t \t <td align="right">4444</td> 
 
\t \t <td align="right">an4444</td> 
 
\t \t <td align="right">NN</td> 
 
\t \t <td align="right">VV</td> 
 
\t \t <td align="right"></td> 
 
\t </tr> 
 
\t <tr valign="center"> 
 
\t \t <td align="left">kilwa</td> 
 
\t \t <td align="right">555</td> 
 
\t \t <td align="right">ki555</td> 
 
\t \t <td align="right">5555</td> 
 
\t \t <td align="right">ki5555</td> 
 
\t \t <td align="right">NN</td> 
 
\t \t <td align="right">VV</td> 
 
\t \t <td align="right"></td> 
 
\t </tr> 
 
\t <tr valign="center"> 
 
\t \t <td align="left">sekil</td> 
 
\t \t <td align="right">666</td> 
 
\t \t <td align="right">se666</td> 
 
\t \t <td align="right">5555</td> 
 
\t \t <td align="right">se6666</td> 
 
\t \t <td align="right">NN</td> 
 
\t \t <td align="right">VV</td> 
 
\t \t <td align="right"></td> 
 
\t </tr> 
 
\t <tr valign="center"> 
 
\t \t <td align="left">janit</td> 
 
\t \t <td align="right">777</td> 
 
\t \t <td align="right">ja777</td> 
 
\t \t <td align="right">7777</td> 
 
\t \t <td align="right">ja7777</td> 
 
\t \t <td align="right">NN</td> 
 
\t \t <td align="right">VV</td> 
 
\t \t <td align="right"></td> 
 
\t </tr> 
 
\t 
 
</table> 
 
</p> 
 

 
</body> 
 

 
</html>

= + = + = + = + = + = + = + = +
Спасибо ,,, Я жду

+0

Вы хотите создать другой HTML-код? –

+0

Я хочу извлечь конкретную таблицу содержимого html (показать рис.) И вставить в dataGridView1 (показать код C#) C# – Zads10

+0

Попробуйте сначала обратиться к таблице, а затем работать по строке и по столбцу. – Andrew

ответ

0

Может попытаться извлечь таблицу первой?

 HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument(); 
     // Load a file 
     html.Load(@"c:\OneDrive\Work\MS Projects\text.html");  
     HtmlNode table = html.DocumentNode.SelectSingleNode("//table[@border='1']"); 
     DataTable dt = new DataTable(); 
     var rows = table.SelectNodes("tr"); 
     for (int i = 0; i < rows.Count; ++i) 
     { 
      //if row = then these are headers 
      if (i == 0) 
      { 
       var cols = rows[i].SelectNodes("th");      
       dt.Columns.Add(new DataColumn(cols[0].InnerText.ToString())); 
       dt.Columns.Add(new DataColumn(cols[1].InnerText.ToString()));      
       dt.Columns.Add(new DataColumn(cols[3].InnerText.ToString())); 
       dt.Columns.Add(new DataColumn(cols[2].InnerText.ToString())); 
       dt.Columns.Add(new DataColumn(cols[4].InnerText.ToString())); 
      } 

      //row>0 then data 
      else 
      { 
       var cols = rows[i].SelectNodes("td"); 

       DataRow dr = dt.NewRow(); 
       dr[0] = cols[0].InnerText.ToString(); 
       dr[1] = cols[1].InnerText.ToString(); 
       dr[2] = cols[3].InnerText.ToString(); 
       dr[3] = cols[2].InnerText.ToString(); 
       dr[4] = cols[4].InnerText.ToString(); 
       dt.Rows.Add(dr); 
      } 
     } 
+0

thnx, этот код работает на этой странице, _____ Пожалуйста, по возможности мне нужен этот код в этом XPatch => "// p [4]/table" _____ "// table [@ border = '1' ] "=> Это не работает на всех страницах. _____ . Я проверяю эту страницу exmple, это не worck => xpatch is" // p [5]/table "_____ код страницы тест 2
показать код + pic _____ www , pastebin .com/T4WuXAjU _____ Спасибо ,,, Я жду ,, – Zads10

+0

Я анализирую страницу кода html: XPatch => tool HAPXPathFinder – Zads10

Смежные вопросы