Я пытаюсь проанализировать 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 содержит правильную информацию.Что я делаю не так?