2016-11-26 102 views
2

我有以下代码段具有从其中被存储在数据库表中的XML数据输出HTML标记得到转化

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; 

} 

我具有被存储在表中作为

<STRONG>this</STRONG> is only a test. 
HTML标签

然而上述被越来越转化为

&lt;STRONG&gt;this&lt;/STRONG&gt;is only a test. 

我怎样才能保持原有的HTMLŧ当我执行代码时,或者如何在不使用任何第三方库的情况下将其转换回原始代码,因为我们有在服务器中使用第三方库的限制。

+0

也许是你的Unicode –

+0

我没有看到你发布的代码是如何相关的:它只是向响应发送0字节。你真正的代码是什么? –

+0

我们不知道所有这些方法做什么。 probal可能在processTemplate的代码中。 –

回答

1

来看看本作的更多信息

的HTML字符编码所有适用的字符转换为自己的 相应的HTML实体。某些字符在HTML中具有特殊的 意义,应该将其转换为正确的HTML 实体以保留其含义。例如, 不可能使用<字符,因为它在HTML语法中用于创建和 关闭标记。必须将其转换为其相应的< HTML实体 才能显示在HTML页面的内容中。 HTML实体名称是 区分大小写。

,然后这可以帮助你:

使用Apache Commons StringEscapeUtils.unescapeHtml4()此:

取消转义包含实体的字符串逃脱包含 字符串对应逃逸实际的Unicode字符。支持 HTML 4.0实体。

编辑

似乎Java本身有这个方法

URLDecoder.decode(String stringToDecode) 

URLDecoder.decode(String stringToDecode, String charset); 

希望这对你的作品