Как сохранить переводы строк из xml? - PullRequest
0 голосов
/ 19 июня 2011

Когда я получаю слова с этой страницы: здесь , новые строки исчезают.Я извлекаю xml в одной строке, и для простоты этого вопроса я использую подстроку для вычитания текста.Когда я печатаю каждый символ, используя следующий код, новые строки не видны.

if (response.contains("lyrics_body")) {
            lyrics = response.substring(response.indexOf("<lyrics_body>") + 13, response.indexOf("</lyrics_body>"));
            StringReader sr = new StringReader(lyrics);
            int l;
            try {
                while ((l = sr.read()) != -1) {
                    System.out.println(":" + l);
                }
            } catch (Exception ex) {

            }
        }

Часть вывода:

85  U
104 h
110 n
32  
116 t
105 i
115 s
115 s
32  
117 u
104 h
110 n
32
116 t
105 i
115 s
115 s
32  
117 u
104 h
110 n
32  
116 t
105 i
115 s
115 s
32
98  b
97  a
98  b
121 y
68  d   
111 o
103 g
32
119 w
105 i
108 l
108 l
.
.

Я добавил для удобства отдельные символы за числамии, очевидно, между «ребенком» и «собакой» должна быть новая строка.

Как мне разобрать эту новую строку?

Ответы [ 2 ]

1 голос
/ 19 июня 2011

Я использовал этот источник откуда-то:

public static String postData(String base, List<BasicNameValuePair> data) throws IOException {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(base);
    HttpResponse response = null;
    String line = "";
    StringBuilder total = new StringBuilder();
    HttpProtocolParams.setUseExpectContinue(httpclient.getParams(), false);

    try {
        httppost.setEntity(new UrlEncodedFormEntity(data));

        // Execute HTTP Post Request
        response = httpclient.execute(httppost);

        // Wrap a BufferedReader around the InputStream
        BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

        // Read response until the end
        while ((line = rd.readLine()) != null) {
            total.append(line);
            total.append("\n"); //I'VE JUST ADDED THIS LINE
        }

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // Return full string
    return total.toString();
}

Очевидно, что часть, где написано "Я только что добавил эту строку", была проблемой, спасибо Джону за то, что заставил меня посмотреть этот код!

0 голосов
/ 19 июня 2011

обернуть StringReader в BufferedReader и использовать readLine()

    BufferedReader bufferedReader = new BufferedReader(new StringReader(lyrics));

    for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
        // do something with line
    }
...