我有以下代码片段来从XML数据输出,该数据存储在数据库表
中ServletOutputStream os = response.getOutputStream();
String contentDisposition = "attachment;filename=Test.HTML";
response.setHeader("Content-Disposition",contentDisposition);
response.setContentType("text/html");
XMLNode xmlNode = (XMLNode)am.invokeMethod("getDataXML");
ByteArrayOutputStream outputStream =
new ByteArrayOutputStream();
xmlNode.print(outputStream);
ByteArrayInputStream inputStream =
new ByteArrayInputStream(outputStream.toByteArray());
ByteArrayOutputStream pdfFile = new ByteArrayOutputStream();
TemplateHelper.processTemplate(((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getAppsContext(),
"INV",
"MyTemplate",
((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getLanguage(),
((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getCountry(),
inputStream,
TemplateHelper.OUTPUT_TYPE_HTML,
null, pdfFile);
byte[] b = pdfFile.toByteArray();
response.setContentLength(b.length);
os.write(b, 0, b.length);
os.flush();
os.close();
pdfFile.flush();
pdfFile.close();
public XMLNode getDataXML() {
OAViewObject vo = (OAViewObject)findViewObject("DataVO");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
XMLNode xmlNode =
(XMLNode)vo.writeXML(4, XMLInterface.XML_OPT_ALL_ROWS);
return xmlNode;
}
我有HTML标签,存储在表格中
<STRONG>this</STRONG> is only a test.
但是上面的内容正在转换为
<STRONG>this</STRONG>is only a test.
如何在执行代码时保留原始HTML标记,或者如何在不使用任何第三方库的情况下将其转换回原始HTML标记,因为我们限制在服务器中使用第三方库。
答案 0 :(得分:1)
请查看此信息以获取更多信息
HTML字符编码器将所有适用的字符转换为它们 相应的HTML实体。某些角色有特殊之处 HTML中的重要性,应该转换为正确的HTML 实体保留其含义。例如,这是不可能的 使用&lt;因为它在HTML语法中用于创建和 关闭标签。它必须转换为相应的&lt; HTML实体 显示在HTML页面的内容中。 HTML实体名称是 区分大小写。
然后这可以帮到你:
使用Apache Commons StringEscapeUtils.unescapeHtml4()
:
将包含实体转义符的字符串转义为包含的字符串 与转义对应的实际Unicode字符。支持 HTML 4.0实体。
修改强>
似乎java本身就有这种方法
URLDecoder.decode(String stringToDecode)
和这个
URLDecoder.decode(String stringToDecode, String charset);
希望这对你有用