【问题标题】:BIRT converting HTML text to plain text in scriptsBIRT 在脚本中将 HTML 文本转换为纯文本
【发布时间】:2018-08-22 16:18:17
【问题描述】:

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

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

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 的想法也是可以接受的。这只是我解决此问题的尝试之一。

【问题讨论】:

    标签: javascript html java-8 birt


    【解决方案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;
    &lt;body&gt;&lt;/body&gt;

    要解码 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;
    &lt;body&gt;&lt;/body&gt;

    【讨论】:

    • 值得注意的是——相反的方向是我的意图。希望采用转义的 HTML 并将其变为纯文本。但这给了我一些工作的余地。
    • 所以我能够在网上找到一个类似的功能,它的功能相反。 return str.replace(/(\d+);/g, function(match, dec) {return String.fromCharCode(dec);}); --- 但是,在 BIRT 中运行时出现错误:无法将 /(\d+);/g 转换为 java.lang.Character
    猜你喜欢
    • 2012-04-12
    • 2014-09-08
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 2015-03-23
    • 2023-03-20
    相关资源
    最近更新 更多