Java 从自定义标记在jsp中呈现XML

Java 从自定义标记在jsp中呈现XML,java,xml,jsp,jstl,Java,Xml,Jsp,Jstl,我有一个自定义标记,在其中获取XML文件的内容并将其存储在字符串中,然后尝试在jsp上呈现。下面是一些代码快照 DataInputStream dis = new DataInputStream(bis); String final_str=""; while (dis.available() != 0) { String currentLine=dis.readLine(); Sy

我有一个自定义标记,在其中获取XML文件的内容并将其存储在字符串中,然后尝试在jsp上呈现。下面是一些代码快照

 DataInputStream dis = new DataInputStream(bis);
            String final_str="";
            while (dis.available() != 0) {
                String currentLine=dis.readLine();
                System.out.println(currentLine);
                final_str += currentLine + "\n";
            }
            logger.info(final_str);
            pageContext.setAttribute("sitemap",final_str);
我在jsp上使用的是什么

<c:out value = "${sitemap}" />

如何在jsp中呈现XML?我的日志文件显示XML,但无法在浏览器上正确呈现。如图所示

bis.toString()
肯定会返回一个对象。 你可以这样做

上面的代码将打印输入流中的所有行,您可以将其存储到字符串中并返回

pageContext.setAttribute("sitemap",final_str);  
更新 此函数接受普通xml字符串并格式化字符串(缩进)


整理了一些语法错误。嗨,这里有两件事。首先在XML呈现时,然后“/n”新行不起作用。其次,它只显示XML标记的值。标记本身没有出现。您可以发布结果吗?在cout标记中使用escapeXML解决了这个问题,但是您知道如何在jspOh中执行xml缩进吗?很好!我不知道如何在JSP中缩进XML,但我知道如何在java中缩进XML
pageContext.setAttribute("sitemap",final_str);  
public static String formatXSD(String xmlString) {
        try {
            Source xmlInput = new StreamSource(new StringReader(xmlString));
            StringWriter stringWriter = new StringWriter();
            StreamResult xmlOutput = new StreamResult(stringWriter);
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            transformerFactory.setAttribute("indent-number", 2);
            Transformer transformer = transformerFactory.newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.transform(xmlInput, xmlOutput);

            return xmlOutput.getWriter().toString();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }