gpt4 book ai didi

android - 解析 XML HttpResponse

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:29 24 4
gpt4 key购买 nike

我正在尝试解析从 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 解析器:

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 包含正确的信息。我做错了什么?

最佳答案

我解决了。 DOM XML 解析器需要更多调整:

        HttpResponse response = client.execute(post);
HttpEntity r_entity = response.getEntity();
String xmlString = EntityUtils.toString(r_entity);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();
InputSource inStream = new InputSource();
inStream.setCharacterStream(new StringReader(xmlString));
Document doc = db.parse(inStream);

String playcount = "empty";
NodeList nl = doc.getElementsByTagName("playcount");
for(int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
org.w3c.dom.Element nameElement = (org.w3c.dom.Element) nl.item(i);
playcount = nameElement.getFirstChild().getNodeValue().trim();
}
}

关于android - 解析 XML HttpResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4974591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com