【发布时间】:2011-06-25 20:47:02
【问题描述】:
我正在尝试解析从 HttpPost 到服务器 (last.fm) 的 XML HttpResponse,用于 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 Parser:
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 包含正确的信息。我做错了什么?
【问题讨论】:
标签: android xml parsing http-post httpresponse