LINUX.ORG.RU

Как бы получить QDomNode для элемента с текстом из пробелов?

 , , ,


0

2

Продолжаю решать задачку очистки форматирования в QTextEdit. Я решил проблему «съедания» пробелов при вызове QTextEdit::insertHtml() путем замены их в HTML на спецсимвол UFFFD (Replacement Character) перед передачей в insertHtml(), и последующей замены уже в QTextDocument методами курсора.

Но тут вылезла другая проблема.

Если взять HTML-код методом:

textArea->textCursor().selection().toHtml()


засунуть его в QDomDocument, получить из DOM код XML и вставить его на прежнее место через QTextEdit::insertHtml(), то текст изменится. При каких условиях? А вот при каких.

Если на экране мы видим четыре пробела и текст, исходный HTML будет следующий:

<p>
  <span>    text</span>
</p>


При парсинге в QDomDocument, текстовый узел будет содержать текст

"    text"


Если на экране мы видим четыре пробела и ссылку, HTML будет следующий:

<p>
  <span>    </span>
  <a href="http://yandex.ru">
    <span>text</span>
  </a>
</p>


При парсинге в QDomDocument, текстовой ноды из четырех пробелов внутри элемента span не будет! И таким образом, когда мы конвертнем обратно DOM в XML, эти четыре пробела пропадут. А нужно, чтоб они сохранились.

Вопрос. Как обойти такую проблему?

★★★★★

Последнее исправление: Xintrea (всего исправлений: 2)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.