L'analyse d'un XML HttpResponse
Je suis en train d'essayer de parser le XML HttpResponse je obtenir à partir d'une HttpPost à un serveur (dernière.fm), pour un dernier.fm android app. Si j'ai simplement analyser pour la chaîne, je peux voir qu'il est normal chaîne xml, avec toutes les informations souhaitées. Mais je ne peux pas analyser l'unique NameValuePairs. C'est mon objet HttpResponse:
HttpResponse response = client.execute(post);
HttpEntity r_entity = response.getEntity();
J'ai essayé deux choses différentes et non d'entre eux travaillaient. J'ai d'abord essayé de récupérer les 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();
}
}
Après ce code, le nom et la lecture en reste "vide". J'ai donc essayé d'utiliser un Parseur 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();
}
Cela semble échouer beaucoup plus tôt, car il n'a pas la même définition de la lecture de la variable. Mais comme je l'ai dit, si je effectuer cette:
EntityUtils.toString(r_entity);
Je vais obtenir un parfait chaîne xml. Il devrait donc aucun problème à pars depuis la HttpResponse contient les informations correctes. Ce que je fais mal?
OriginalL'auteur gaussd | 2011-02-11
Vous devez vous connecter pour publier un commentaire.
Je l'ai résolu. Le DOM XML parser besoin d'un peu plus de réglage:
OriginalL'auteur gaussd
C'est une très bonne tutoriel sur l'analyse de XML à partir d'un flux.
Vous pouvez l'utiliser pour créer plus d'applications robustes qui ont besoin d'analyser les flux XML
J'espère que cela aide
OriginalL'auteur raukodraug
Vous ne pouvez pas utiliser == pour comparer une Chaîne
Quand on utilise l'opérateur==, nous sommes comparer les deux références de l'objet, pour voir si elles pointent vers le même objet. On ne peut pas comparer, par exemple, deux chaînes pour l'égalité, à l'aide de l'opérateur==. Nous devons plutôt utiliser le .méthode equals, qui est une méthode héritée par toutes les classes de java.lang.Objet.
Voici la bonne façon de comparer deux chaînes de caractères.
Prises de Top Dix Des Erreurs Java Programmeurs Font
OriginalL'auteur Blundell