BIRT在脚本中将HTML文本转换为纯文本

时间:2018-08-22 16:18:17

标签: javascript html java-8 birt

我正在尝试将HTML实体/标签从数据库列转换为纯文本,以显示在报告中。该报告是动态的,因此是使用BIRT中的脚本功能创建的。

由于没有显示布局,因此我无法将标签/文本的类型更改为HTML(据我所知)。我已经尝试了一些方法,但是没有正常工作。这是我正在尝试做的-任何建议或指导将不胜感激。请注意,我不能包含任何第三方库,但可以使用相当标准的任何东西。

function decodeHTML(html) {
    var dbf = DocumentBuilderFactory.newInstance();
    var builder = dbf.newDocumentBuilder();
    var doc = builder.newDocument();

    var txt = doc.createElement("textarea");
    txt.innerHTML = html; //does not work (think this is not avaiable in Java)
    return txt.value;
}

*值得注意的是-任何其他不涉及Java或DOM的想法也是可以接受的。这只是我解决此问题的尝试之一。

1 个答案:

答案 0 :(得分:1)

您可以使用此功能来转义HTML:

function escapeHTML(str){
   return str.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
    return '&#'+ i.charCodeAt(0)+ ';';
  });
}

function escapeHTML(str){
   return str.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
    return '&#'+ i.charCodeAt(0)+ ';';
  });
}
var escaped = escapeHTML("<h1>Header</h1>");
console.log(escaped);
document.body.innerHTML = escaped;
<body></body>

要解码HTML实体,可以使用DOMParser

function decodeHTML(str){
  var doc = new DOMParser().parseFromString(str, "text/html");
  return doc.documentElement.textContent;
}

function decodeHTML(str){
      var doc = new DOMParser().parseFromString(str, "text/html");
      return doc.documentElement.textContent;
}
var decoded = decodeHTML("&#60;h1&#62;Header&#60;/h1&#62;");
console.log(decoded);
document.body.innerHTML = decoded;
<body></body>