#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));
// ...