Imprimindo em uma pagina JSP, um xml de uma variável String

11 respostas
xml
A

Criei uma variável String xmlImpresso (que tem o formato XML após o uso da biblioteca XStream) e gostaria de imprimi-la em uma página JSP.
Eu consigo imprimir no console mas quando tento imprimir na página ela não vem com as tags. Se possível gostaria de não ter q criar um arquivo externo.

11 Respostas

L

Tu tem que escapar o xml para as tags aparecem. Veja: https://www.tutorialspoint.com/jsp/jstl_function_escapexml.htm

A

Pois eh. Mas pelo que vi, desse jeito, seria algo similar a recriar o xml na mão. Não entendi não…
Se eu tiver muitas tags vai ser algo muito trabalhoso.

L

Vc quer imprimir o xml na tela para que as tags sejam apresentadas? Se sim, não tem trabalho, basta passar a string com o xml para a função fn:escapeXml. O xml deverá ser impresso na tela.

A

Cara, não entendi. Como eu faria no exemplo a seguir?
Tenho uma variável string chamada xml com já todo o xml dentro dela.
Tenho em uma página JSP o seguinte código:

<%

String nome = nome;

String funcao = funcao;

XStream xstream = new XStream();

Mensagem mensagem = new Mensagem(nome, funcao);

String xml = xstream.toXML(mensagem);

%>
A

E o taglib dá erro.

<%@ taglib uri = “http://java.sun.com/jsp/jstl/core” prefix = “c” %>
<%@ taglib uri = “http://java.sun.com/jsp/jstl/functions” prefix = “fn” %>

L

Hmmm, scriptlet eh brabo, mas dá para tentar isso:

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/functions" prefix = "fn" %>

<%
    String nome = "nome";
    String funcao = "funcao";
    
    XStream xstream = new XStream();
    
    Mensagem mensagem = new Mensagem(nome, funcao);
    String xml = xstream.toXML(mensagem);
    pageContext.setAttribute("xml", xml);
%>

<p>${fn:escapeXml(xml)}</p>
A

Ele não aceita. Dá erro tanto nas duas linhas lá de cima (taglib) como na última.

L

Qual erro? (sempre que algum erro acontecer durante uma ajuda, já responda com o erro que aconteceu).

Editei o código do exemplo que postei, pq as aspas estavam diferentes e isso pode causar erro na JSP.

A

Adicionei a dependência abaixo e mesmo assim a última linha está dando problema.

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

Erro:
“The function fn:escapeXml is undefined”

A

Opa, deu certo!
Ele estava encontrando erro nos comentários. Apaguei e rodou.

Mas uma última coisa.
O formato. Está vindo um tripão.
Não teria como identar isso?

L

Tu pode tentar usar a tag <pre>:

<pre>${fn:escapeXml(xml)}</pre>

Mas ele melhora a visualização, mas não faz a identação.

Criado 7 de julho de 2020
Ultima resposta 7 de jul. de 2020
Respostas 11
Participantes 2