Я хочу использовать HAP для очистки данных из таблицы на веб-сайте, прокручивать строки, чтобы найти значение в столбце, которое соответствует предопределенной строке, а затем сохранить только ту строку, которая соответствует. Тогда у меня будет словарь с заголовком столбца в качестве ключа и текст столбца для выбранной строки в качестве значения.HTML Agility Pack и LINQ
Таблица ex.
<table id="Table3">
<tbody><tr><td></td></tr>
<tr>
<td>ID</td>
<td>Last Name</td>
<td>First Name</td>
<td>Birth Date</td>
<td>Relation</td>
</tr>
<tr>
<td>nbsp;01 </td>
<td> DUNN </td>
<td> JOE </td>
<td> 19931209 </font></td>
<td> Son </td>
</tr>
<tr>
<td>nbsp;02 </td>
<td> SMITH </td>
<td> MARY </td>
<td> 19950206 </font></td>
<td> Daughter </td>
</tr>
<tr>
<td>nbsp;03 </td>
<td> ROCKFORD </td>
<td> BILL </td>
<td> 20000320 </font></td>
<td> Son </td>
</tr>
</tbody></table>
Если моя дата DOB Я хочу, чтобы соответствовать это 20000320, то я хочу всю информацию о Билле.
Добавление заголовков заголовков в список не представляет проблемы. Я знаю, что у меня нет правильной строки пользователя. Я все еще пытаюсь получить список строк вместо одной строки. Другая проблема, с которой я сталкиваюсь с пользовательской строкой, - это внутренний текст, который возвращается с «& nbsp», и я не могу просто выполнить .Replace, поэтому мне нужен способ удалить пробелы. Я открыт для всех предложений. Разумные способы сделать все это и т.д.
List<string> headerList = new List<string>();
List<string> userList = new List<string>();
var htmlRows = htmlDoc.DocumentNode.SelectNodes("//*[@id=\"Table3\"]/tbody/tr");
if(htmlRows != null)
{
// Add first row which contains column headings
htmlRows[2]
.Elements("td")
.Select(td => td.InnerText.Trim())
.ToList()
.ForEach(header => headerList.Add(header));
// Add user rows
htmlRows
.Skip(3)
.Select(tr => tr.Elements("td")
.Where(td => td.InnerText.Trim() == dteDOB))
.ToList()
.ForEach(row => userList.Add(row));
for(int i = 0; i < headerList.Count; i++)
{
if(headerList.Count == userList.Count && userList[i] != null)
dictValues.Add(headerList[i], userList[i]);
}
}
Спасибо. Это сделал трюк. Я все время искал HTML Agility Pack, LINQ и все остальное. Я не думал больше изучать XPath. – jrob42