2016-11-26 104 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); 

希望這對你的作品