How to save newlines from xml?
When I retrieve lyrics from this page: here, the newlines disappear. I retrieve the xml in single String, and for simpleness for this question I use substring to subtract the lyrics. When I print each character using the following code, no newlines are visible.
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) {
}
}
Part of the output:
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
.
.
I've added the individual chars behind the numbers for clarity, and obviously between 'baby' and 'dog' there should be a newline.
How can I 开发者_如何学Goparse this newline?
I've used this source from somewhere:
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();
}
Obviously, the part where it says "I've just added this line" was the problem, thanks Jon for making me look in this code!
wrap StringReader
in a BufferedReader
and use readLine()
BufferedReader bufferedReader = new BufferedReader(new StringReader(lyrics));
for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
// do something with line
}
精彩评论