【问题标题】:How to output formatted html in java如何在java中输出格式化的html
【发布时间】:2011-02-20 20:48:44
【问题描述】:

我正在阅读这样的 html 文件:

try {
    BufferedReader bufferReader = new BufferedReader(new FileReader(path));
    String content;
    while((content = bufferReader.readLine()) != null) {
        result += content;
    }
    bufferReader.close();

} catch (Exception e) {
    return e.getMessage();
}

我想在 GWT textArea 中显示它,我将它作为字符串提供给它。但是该字符串失去了缩进,并以单行文本的形式出现。有没有办法以正确的格式显示它(带有缩进)?

【问题讨论】:

    标签: java html parsing gwt indentation


    【解决方案1】:

    这可能是因为readLine() 删除了行尾字符。为每一行重新添加它们。

    除此之外,在循环中使用StringBuilder 而不是使用+=String

    try {
        BufferedReader bufferReader = new BufferedReader(new FileReader(path));
        StringBuilder sb = new StringBuilder();
        String content;
        while ((content = bufferReader.readLine()) != null) {
            sb.append(content);
            sb.append('\n');   // Add line separator
        }
        bufferReader.close();
    } catch (Exception e) {
        return e.getMessage();
    }
    
    String result = sb.toString();
    

    【讨论】:

      【解决方案2】:

      好吧,假设你的 textArea 理解 HTML(我不具体了解 GWT),你为什么不在它前面加上 <pre> 然后附加 </pre>

      您可能仍需要将所有 HTML 特殊字符(例如 & 转义为 &< 转义为 <

      【讨论】:

        【解决方案3】:

        改用 FileReader 可能更有效——没有理由必须逐行阅读文本。就像 Jesper 建议的那样,使用 StringBuilder 来构建您的 String 更有效。此外,使用 FileReader,您不必手动附加任何换行符:

        StringBuilder sb = new StringBuilder();
        FileReader in = null;
        try {
            in = new FileReader(path);
            int read;
            char buf[] = new char[4096];
            while ((read = in.read(buf)) != -1) {
                sb.append(buf, 0, read);
            }
        } catch (Exception e) {
            return e.getMessage();
        } finally {
            in.close();
        }
        
        String result = sb.toString();
        

        【讨论】:

          【解决方案4】:

          如果您的 HTML 恰好是 XHTML,那么您可以尝试将它放入 XML 解析器,例如 jdom 或 dom4j,它通常具有一些“漂亮打印”选项。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多