Поскольку вы проверили мою другую идею, и она не сработала, я думаю, у вас есть только два варианта:
- Изменить HTML Agility Pack для обработки вашего дела, или
- Заполните пропущенные
</tr>
s самостоятельно.
Вот регулярное выражение, которое может заполнить недостающие </tr>
s для вас:
html = Regex.Replace(html, "<tr[^>]*>(?:(?!</?tr>|</tbody>|</table>).)*?(?=<tr[^>]*>|</tbody>|</table>)", "$&</tr>", RegexOptions.Singleline | RegexOptions.IgnoreCase);
(Если кто-то может улучшить мое регулярное выражение, пожалуйста, не стесняйтесь.)