Я пытаюсь проанализировать XML HttpResponse, который я получаю от HttpPost на сервер (last.fm), для приложение last.fm для Android. Если я просто проанализирую его на строку, я увижу, что это обычная строка xml со всей желаемой информацией. Но я просто не могу разобрать единственный NameValuePairs. Это мой объект HttpResponse:
HttpResponse response = client.execute(post);
HttpEntity r_entity = response.getEntity();
Я пробовал две разные вещи, но ни одна из них не сработала. Сначала я попытался получить NameValuePairs:
List<NameValuePair> answer = URLEncodedUtils.parse(r_entity);
String name = "empty";
String playcount = "empty";
for (int i = 0; i < answer.size(); i++){
if (answer.get(i).getName().equals("name")){
name = answer.get(i).getValue();
} else if (answer.get(i).getName().equals("playcount")){
playcount = answer.get(i).getValue();
}
}
После этого кода имя и счетчик воспроизведения остаются «пустыми». Итак, я попытался использовать XML-парсер:
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document answer = db.parse(new DataInputStream(r_entity.getContent()));
NodeList nl = answer.getElementsByTagName("playcount");
String playcount = "empty";
for (int i = 0; i < nl.getLength(); i++) {
Node n = nl.item(i);
Node fc = n.getFirstChild();
playcount Url = fc.getNodeValue();
}
Кажется, что это происходит намного раньше, так как даже не доходит до установки переменной playcount. Но, как я уже сказал, если я выполню это:
EntityUtils.toString(r_entity);
я получу идеальную строку xml. Поэтому разобрать его не составит труда, поскольку HttpResponse содержит правильную информацию. Что я делаю не так?