Я пытаюсь получить элемент h2, следующий за комментарием HTML, с текстом «Results», за которым следует элемент таблицы с именем класса «stockfeed».
Я выяснил, как получить нужные мне данные ( см. Ниже ), но я не уверен, как объединить 2 элемента одновременно. Я знаю, что могу выполнять итерации коллекций, используя один и тот же индексатор для корреляции значений, но это кажется подверженным ошибкам, поскольку может быть возможно, что один из моих элементов h2 не будет иметь соседний элемент таблицы (редко, но возможно).
Пример разметки HTML:
<h1>
Results Page</h1>
<h2>
Updated Daily @ 10:00 AM</h2>
<div class='someClass1'>
<!-- Results -->
<div class='something'>
</div>
<h2 style='display: inline;'>
<a href='http://www.somesite.com'>Table 1</a>
</h2>
<div class='clr'>
</div>
<div class='resultBlock'>
<table class='stockfeed'>
<thead>
<tr>
<th>
Part
</th>
<th>
Description
</th>
<th>
Stock
</th>
<th>
Price
</th>
</tr>
</thead>
<tbody>
<tr class='row1' valign='top'>
<td>
A 1234567890
</td>
<td class='description'>
Part Description
</td>
<td>
1,000,000
</td>
<td>
$1.99
</td>
</tr>
<tr class='row1' valign='top'>
<td>
B 1234567890
</td>
<td class='description'>
Part Description
</td>
<td>
1,000,000
</td>
<td>
$1.99
</td>
</tr>
<tr class='row1' valign='top'>
<td>
C 1234567890
</td>
<td class='description'>
Part Description
</td>
<td>
1,000,000
</td>
<td>
$1.99
</td>
</tr>
</tbody>
</table>
</div>
<!-- Results -->
<div class='something'>
</div>
<h2 style='display: inline;'>
<a href='http://www.somesite.com'>Table 2</a>
</h2>
<div class='clr'>
</div>
<div class='resultBlock'>
<table class='stockfeed'>
<thead>
<tr>
<th>
Part
</th>
<th>
Description
</th>
<th>
Stock
</th>
<th>
Price
</th>
</tr>
</thead>
<tbody>
<tr class='row1' valign='top'>
<td>
A 1234567890
</td>
<td class='description'>
Part Description
</td>
<td>
1,000,000
</td>
<td>
$1.99
</td>
</tr>
<tr class='row1' valign='top'>
<td>
B 1234567890
</td>
<td class='description'>
Part Description
</td>
<td>
1,000,000
</td>
<td>
$1.99
</td>
</tr>
<tr class='row1' valign='top'>
<td>
C 1234567890
</td>
<td class='description'>
Part Description
</td>
<td>
1,000,000
</td>
<td>
$1.99
</td>
</tr>
</tbody>
</table>
</div>
</div>
Текущий код для разбора значений отдельно:
HtmlNodeCollection titles = doc.DocumentNode.SelectNodes("//comment()[contains(.,'Results')]/following-sibling::h2");
for (int tit = 0; tit < titles.Count; ++tit)
{
// Do Something
}
HtmlNodeCollection tables = doc.DocumentNode.SelectNodes("//table[@class='stockfeed']");
for (int tab = 0; tab < tables.Count; ++tab)
{
// Do Something
}