Недавно тоже была задачка делать сохранение гипертекста из Поля HTML-документа. У элемента HTML поля есть свойство Документ. Там становятся доступны свойства DOM, и вот в одном из свойств был почти весь текст
Могу сегодня вечером, если актуально, прислать решение.
Решение, пожалуй, уже не актуально, т.к. приведенный код вполне себе формирует текст HTML. И этот HTML отображается корректно везде, где требуется. Вопрос больше был в том, что при трансформации: текст HTML -> Документ HTML -> текст HTML, выходной текст уже не проходит валидатор. Даже без изменения ДокументHTML в процессе. В частности, добавляются закрывающие </hr> и </meta>. В теории может добавить проблем. Поэтому и подумал, что сам метод неверный и есть другие варианты.
Если есть возможность, прогоните ваш исходный HTML и получившийся через
https://validator.w3.org/. Возможно, ваш метод действительно лучше.