Я использую HtmlAgilityPack для извлечения данных из источника HTML-кода. Это пример HTML:Как избежать повторения данных, извлеченных из источника HTML, используя HtmlAgilityPack
<div class="enum-container">
<div class="enum">
<span class="field-key">MD5</span> a4188cf2b9189f82b855350233a307eb
</div>
<div class="enum">
<span class="field-key">SHA1</span> c3eedd67a14810b8c639eb77ed2731e574245b2a
</div>
<div class="enum">
<span class="field-key">File size</span>
3.8 KB (3854 bytes)
</div>
</div>
Я использую этот код:
Dim Table2 As New DataTable()
Table2.Columns.Add("Value1", GetType(String))
Table2.Columns.Add("Value2", GetType(String))
For Each row1 As HtmlNode In doc.DocumentNode.SelectNodes("//div[@id='file-details']//div[@class='enum-container']//div[@class='enum']")
Dim MyValue1 As HtmlNode = row1.SelectSingleNode("//span[@class='field-key']")
Dim MyValue2 As String = row1.InnerText
Table2.Rows.Add(MyValue1.InnerText, MyValue2)
Next
DataGridView3.DataSource = Table2
Результат таков:
http://i.stack.imgur.com/vPriY.png
Вы можете видеть, что первая колонка получает повторяющееся значение (MD5).
То, что я хочу, как это:
http://i.stack.imgur.com/jlsk5.png
Спасибо.
возможно дубликат [Html Agility Pack, итерация на столе узла не работает] (http://stackoverflow.com/questions/26176173/html-agility-pack-iteration-on-table-node-not-working) – har07
@ har07 Я использовал это раньше. Я всегда получаю ** MD5 ** как значение во всех строках таблицы. – Tajrib
@Tajrib Удалите // из того места, где вы выбираете диапазон. Вы выбираете первый диапазон в соответствующем документе. Вот почему вы получаете один и тот же узел каждый раз – Brian