我正在尝试将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的想法也是可以接受的。这只是我解决此问题的尝试之一。
答案 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("<h1>Header</h1>");
console.log(decoded);
document.body.innerHTML = decoded;
<body></body>