Как вывести форматированный HTML в Java - PullRequest
3 голосов
/ 18 мая 2010

Я читаю 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, в которой я передаю его как строку. Но строка теряет отступы и выходит в виде однострочного текста. Есть ли способ отобразить его правильно отформатированным (с отступами)?

Ответы [ 4 ]

5 голосов
/ 18 мая 2010

Вероятно, это связано с тем, что 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();
1 голос
/ 18 мая 2010

Вместо этого может быть более эффективно использовать FileReader - нет причин, по которым вам нужно читать текст построчно. Как предположил Джеспер, использование 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();
1 голос
/ 18 мая 2010

Что ж, если ваша textArea понимает HTML (я не знаю GWT конкретно), почему бы вам не добавить префикс <pre>, а затем добавить </pre>?

Возможно, вам все равно придется экранировать все специальные символы HTML, такие как & до &amp; и < до &lt;.

0 голосов
/ 18 мая 2010

Если ваш HTML оказался XHTML, то вы можете попробовать поместить его в синтаксический анализатор XML, такой как jdom или dom4j, который обычно имеет некоторую опцию pretty-print.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...