将HTml字符串转换为DOM,然后将DOM转换为格式化文本

时间:2017-05-09 00:05:52

标签: html5 html-formatting html-to-text

我使用了RtfToHtml Converter来将一些文本打印到我的表格单元格中。它成功转换,然后我希望这个转换后的文本(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  

如何格式化此文本,使其按照标签格式化,但只有文本显示在我的表格单元格中?

2 个答案:

答案 0 :(得分:0)

您的代码以这样结束:

<Import Project="$(SolutionDir)\CodeAnalize\Microsoft.StyleCop.targets" />

出现错误,应该是

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

(第二次关闭[...]</P></P></DIV> 标记错误p位置)

附加:实际上,第二个关闭p标签太多了 - 您发布的代码中只有一个打开/标签 - 将其删除。

答案 1 :(得分:0)

最后,我找到了一种从内部提取纯文本的方法(但它仍然缺少格式)

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;

}

我的文字有像&gt;这样的特殊字符对于&gt;等等,所以我手动更换了它们。