Передача специальных символов из java в jsp в формате XML

#java #xml #jsp #dom

#java #xml #jsp #dom

Вопрос:

Я извлекаю данные из базы данных, которая содержит «amp;». Я записываю это в stringbuffer и передаю в формате xml в jsp. В jsp, когда я получаю doc.getElementByTagName («tagname») и извлекаю длину дочернего узла, я получаю null.

Данные XML содержат «amp;». Данные, которые я извлекаю, огромны. Итак, каким может быть наиболее эффективный способ заменить «amp;» на amp; в java

<parentnode>
<childnode>
<Data1>A amp; B</Data1>C amp; D<Data2></Data2>
<Data1>E amp; F</Data1><Data2></Data2>
<Data1></Data1><Data2></Data2>
..
..
</childnode>
</parentnode>

Ответ №1:

Вам нужно избежать этого. Поскольку вы, похоже, печатаете обычный XML в JSP (что является плохим подходом, но это в стороне), вы можете использовать JSTL <c:out> для этого.

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<c:out value="${bean.someXmlString}" />
  

Кроме того, вы также можете избежать этого на стороне Java, используя Apache Commons Lang StringEscapeUtils#escapeXml() .

 stringBuilder.append(StringEscapeUtils.escapeXml(someXmlString));
// ...