0

これにより、xml ドキュメントがコンソールにきれいに印刷されます。

//writing output to a file    
Document writeDocument = new Document(document);
//Formatting the file
Serializer serializer = new Serializer(System.out, "UTF-8");
serializer.setIndent(4);
serializer.write(writeDocument);

ブラウザーで表示できるように、同じ xml ドキュメントを返す必要があります。

4

1 に答える 1

0

私のアプリの 1 つでまったく同じ要件がありました。これを行うには、シリアル化された XOM ドキュメントを取得し、それをコード タグでラップし、山かっこをエスケープします。以下のコード例は、これを行う 1 つの方法を示しています。

     public String getHTMLDoc(Document document) {
        try {
            // create a new div to hold your document
            StringBuilder sb = new StringBuilder("<div id=\"xom\" style=\"font-family: 'Courier New', monospace; white-space: pre-wrap\"><pre>\n");
            // Create an array of strings with one string for each line in the document
            ByteArrayOutputStream bout = new ByteArrayOutputStream();
            Serializer writer = new Serializer(bout, "UTF-8");
            writer.setIndent(4);
            writer.write(document);
            writer.flush();
            String xomString = bout.toString("UTF-8");
            String[] lines = xomString.split(writer.getLineSeparator());
            for (int i = 0; i < lines.length; i++) {
                sb.append(convertLine(lines[i]));
            }
            sb.append("</pre></div>\n");
        } catch (IOException ex) {
            // handle the error
        }
        return sb.toString();
    }

    private String convertLine(String s) {
        // wrap the line in a code tag
        StringBuilder sb = new StringBuilder("<code>");
        // Remove trailing whitespace
        Pattern trailingWhiteSpace = Pattern.compile("[ \t\n\f\r]+$");
        Matcher m = trailingWhiteSpace.matcher(s);
        sb.append(m.replaceAll(""));
        // Change all angle brackets "<" and ">"
        sb.append(line.replaceAll(">", "&gt;").replaceAll("<", "&lt;"));
        sb.append("</code>\n");
        return sb.toString();
    }
于 2015-08-11T10:39:47.383 に答える