(27-12-15, 12:30 AM)الشاكي لله كتب : تم التطبيق على مثالك والكود جاهز وهو كما يلي :
PHP كود :
...
...
//remove columns
table.Columns.Remove("column7");
table.Columns.Remove("column6");
table.Columns.Remove("column5");
//re-arrange columns
table.Columns["column2"].SetOrdinal(3);
table.Columns["column3"].SetOrdinal(2);
// Show Result
dataGridView1.DataSource = table;
دائما اخي عندما تتعامل مع html ، اولا اجلب جميع البيانات (سواء المهمة والغير مهمة).
بعدها قم بادخال البيانات داخل array او datatable او اي collection
بعدها بسهولة يمكنك عمل الفلترة بدوال الدوت نت كما رايت
بارك الله فيك على تجاوبك
تفكيرك للحل صراحة ابهرني ,,, لم افكر في الامر ,,,, معك حق استخراج المعلومات html من تم الى array او ,,, تبقى سهلة وعملية وتتعامل بليونة بالمعلومات ,,,,, راح اشتغل بها
تشكر اخي شاكي لله
,,,
(27-12-15, 12:40 AM)الشاكي لله كتب : اسمح لي ان اقوم بإعادة تصوير الفيديو الخاص ب HAPXPathFinder حيث سأقوم ببناء نفس مثالك ولكن سنشرح كيفية التعامل مع HAPXPathFinder لكتابة الكود
تفضل اخي خد راحتك ,,, انا الي راح اشكرك انك راح تعمل شيء تفيد به الجميع ,,, بارك الله فيك
=====
بالنسبة للحل لقد وصلت لحل ,,, لكن طريقة حلك في الرد اعلى احسن ,,, الحل قام بمساعدتي به اخ ,,, وكان حله كالتالي الكود صحيح وشغال... مع بعض الاشكالات لو تعمل لها تحليل في الشرح
تفضل هدا كود الحل ,,, للافادة
=====
كود :
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);
}
}الكود شغال مع متال صفحة html المرفق ,,, لكن هناك اشكال في كود الحل وهو في XPatch لانه غير عملي لو هناك جداول كتييرة ولها نفس الستايل هدا هو ,, ("//table[@border='1']")
اتكلم عن هدا السطر
====
كود :
HtmlNode table = html.DocumentNode.SelectSingleNode("//table[@border='1']")====
ولما استعملت HAPXPathFinder وقمت بجلب XPatch يكون جيد وعملي ("//p[4]/table") منطقيا كان يجب ان يشتغل لاني جربته في HAPXPathFinder واعطى الناتج => لكن لم يشتغل الكود ,,,
,,,, لو امكن ان تشير الى الامر في شرحك او توضحه هنا ,,, لكي تعم الفائدة ,,,, وهو انه لما عوضت XPatch الكود بالــ XPatch التاني ولم يشتغل الكود
في انتظار مرورك
,,,,
راح اكتر عليك اخي الشاكي لله ,,, لو لك وقت تمر على هدا الموضوع ,,,
http://vb4arb.com/vb/thread-14243-post-68107.html
بالتوفيق لكــ
,,,

