Преобразование строки HTML в DOM, а затем DOM в форматированный текст

Я использовал преобразователь RtfToHtml для печати некоторый текст в мою ячейку таблицы. он успешно преобразуется, тогда я хочу, чтобы этот преобразованный текст (geResult.NotesLong) был отформатирован:

<td>
    <script>{ setCommentValue(@colIndex, @rowIndex, @totalColCount, '@geResult.NotesLong', '@geResult.Color');}</script>
</td>

эта функция javascript преобразует его в элемент DOM

function setCommentValue(colIndex, rowIndex, assessmentLength, resultValue, color) {

var str2DOMElement = function (html) {
    var frame = document.createElement('iframe');
    frame.style.display = 'none';
    document.body.appendChild(frame);
    frame.contentDocument.open();
    frame.contentDocument.write(html);
    frame.contentDocument.close();
    var el = frame.contentDocument.body.firstChild;
    document.body.removeChild(frame);
    return el;
  }

 var el = str2DOMElement(resultValue);

 //...code to set elementPos...

 $(".test").get(elementPos).appendChild(el);

}

который отображается в моей таблице следующим образом

<DIV STYLE="text-align:Left;font-family:Segoe UI;font-style:normal;font-weight:normal;font-size:12;color:#000000;"><P STYLE="margin:0 0 0 0;"><SPAN><SPAN>Lee is an attentive listener who tunes into the task at hand  </SPAN></SPAN></P><P /></DIV>

Однако я хочу, чтобы он отображался как (с форматированием, определенным в приведенных выше тегах)

Lee is an attentive listener who tunes into the task at hand  

Как отформатировать этот текст, чтобы он был отформатирован в соответствии с тегами, но в ячейке таблицы отображался только текст?


person Samra    schedule 09.05.2017    source источник


Ответы (2)


Ваш код заканчивается так:

[...]</P><P /></DIV>

Там ошибка, так и должно быть

[...]</P></P></DIV>

(второй закрывающий p тег неправильная / позиция)

ДОПОЛНЕНИЕ: На самом деле, второго закрывающего тега p слишком много — в опубликованном вами коде есть только один открывающий тег p — сотрите его.

person Johannes    schedule 09.05.2017
comment
второй - пустой тег ‹P /›..но даже после его стирания текст остается вместе с тегами - person Samra; 09.05.2017

Наконец-то я нашел способ извлечь простой текст изнутри (но форматы все еще отсутствуют)

html-страница

<td>
    <script>{ setCommentValue(@colIndex, @rowIndex, @totalColCount, '@geResult.NotesLong', '@geResult.Color');}</script>
</td>

javascript

function setCommentValue(colIndex, rowIndex, assessmentLength, resultValue, color) {

String.prototype.replaceAll = function (search, replacement) {
    var target = this;
    return target.split(search).join(replacement);
};

//replace all text special characters
var replaced = resultValue.replaceAll("&amp;", "&").replaceAll("&gt;", ">").replaceAll("&lt;", "<").replaceAll("&quot;", "\"").replaceAll("&#039;", "\'");

var parser = new DOMParser();    
var doc = parser.parseFromString(replaced, "text/xml");       

....

$(".test").get(elementPos).innerHTML = doc.firstChild.textContent;

}

В моем тексте были специальные символы, такие как › для > и т. д., поэтому я заменил их вручную.

person Samra    schedule 09.05.2017