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

} 

У меня есть HTML-теги, которые хранятся в таблице как

<STRONG>this</STRONG> is only a test. 

Однако выше становится превращали в

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

Как я могу сохранить исходный HTML-т ags, когда я выполняю код или как его конвертировать обратно в оригинал без использования каких-либо сторонних библиотек, поскольку у нас есть ограничение использования сторонних библиотек на сервере.

+0

может быть, его ваш Юникода –

+0

Я не вижу, как релевантный вам код: он просто отправляет 0 байт в ответ. Каков ваш реальный код? –

+0

Мы понятия не имеем, что делают все эти методы. Вероятность, вероятно, находится в коде processTemplate. –

ответ

1

взглянуть на это для получения дополнительной информации

Кодировщик HTML символы преобразует все символы в их соответствующей HTML-сущности. Некоторые символы имеют специальное значение в HTML и должны быть преобразованы в их правильные объекты HTML , чтобы сохранить их значения. Например, невозможно использовать символ < для использования в синтаксисе HTML для создания и тегов close. Он должен быть преобразован в соответствующий объект < HTML , который будет отображаться в содержимом HTML-страницы. Имена объектов HTML: с учетом регистра.

и то это может помочь вам:

использовать Apache Commons StringEscapeUtils.unescapeHtml4() для этого:

декодирует строку, содержащую объект ускользает на строку, содержащую фактические символы Unicode, соответствующих побегах , Поддерживает объекты HTML 4.0.

Редактировать

, кажется, сама Java имеет этот метод

URLDecoder.decode(String stringToDecode) 

и это

URLDecoder.decode(String stringToDecode, String charset); 

надеюсь, что это работает для вас