Aller au contenu

Désérialisation fichier XML


Xaz

Recommended Posts

Bonjour à tous,

Après plusieurs recherches sur internet, je n'ai pas trouvé de solutions à mon problème...

En effet, je suis actuellement en train de développer une application android et je me trouve confronté à un problème que je ne sais résoudre et votre grande sagesse me serais d'un grand secours :)

Je récupère un fichier XML à partir d'une URL (pour le moment pas de problème).

Je souhaiterais pouvoir parser ce fichier XML et le désérialiser.

Le fichier XML en question est de cette forme:


<SOURCE>
              <NOM>  j'ai ici un nom </NOM>
              <PRENOM> ceci est un prénom </PRENOM>
</SOURCE>

J'ai créé une classe générique et je souhaiterais parser mon fichier XML de telle sorte que le parseur me créé un objet de ma classe générique en créant les attribut à la volée.

Un exemple est plus explicite:

Avec mon fichier ci-dessus, je voudrais:


Classe_generique objet = new Classe_generique();
objet.createAttribut(source, "SOURCE");
objet.createAttribut(1erBALISE_ENFANT.getName(), "NOM");
objet.createAttribut(2eBALISE_ENFANT.getName(), "PRENOM");

Je ne sais pas si c'est possible mais ce serait gentil de me donner votre avis :)

Merci beaucoup à tous les gens qui prendront le temps de me lire

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

j'ai eu à faire au même problème.

il faut que tu regardes les sujets traitant des flux RSS avec Android. tu auras la solution.

http://www.warriorpoint.com/blog/2009/07/19/android-reading-using-and-working-with-xml-data-and-web-services-in-android/

suis ce tuto . Simple et çà fonctionne surtout :P

Bonjour à tous,

Après plusieurs recherches sur internet, je n'ai pas trouvé de solutions à mon problème...

En effet, je suis actuellement en train de développer une application android et je me trouve confronté à un problème que je ne sais résoudre et votre grande sagesse me serais d'un grand secours :)

Je récupère un fichier XML à partir d'une URL (pour le moment pas de problème).

Je souhaiterais pouvoir parser ce fichier XML et le désérialiser.

Le fichier XML en question est de cette forme:


<SOURCE>
              <NOM>  j'ai ici un nom </NOM>
              <PRENOM> ceci est un prénom </PRENOM>
</SOURCE>

J'ai créé une classe générique et je souhaiterais parser mon fichier XML de telle sorte que le parseur me créé un objet de ma classe générique en créant les attribut à la volée.

Un exemple est plus explicite:

Avec mon fichier ci-dessus, je voudrais:


Classe_generique objet = new Classe_generique();
objet.createAttribut(source, "SOURCE");
objet.createAttribut(1erBALISE_ENFANT.getName(), "NOM");
objet.createAttribut(2eBALISE_ENFANT.getName(), "PRENOM");

Je ne sais pas si c'est possible mais ce serait gentil de me donner votre avis :)

Merci beaucoup à tous les gens qui prendront le temps de me lire

Lien vers le commentaire
Partager sur d’autres sites

Je viens de regarder.

Cela répond à mon premier problème, à savoir: parser le xml venant d'internet vers un objet java.

Malheureusement, mon deuxième soucis est que je ne connais pas d'avance les balises XML. Je souhaiterais donc pouvoir instancier un objet générique à la réception du fichier XML mais que la classe de cet objet ne contienne aucun attribut.

Les attribut de cette classe seraient dont créés à la volée c'est à dire que je récupérerais le nom de la balise XML dans l'exemple ci-dessus <NOM> et sa valeur.

Je créerais un attribut dans ma classe générique:

 String NOM = "la_valeur_de_la_balise"

et ainsi de suite pour les autres balises.

Je répète que ces attributs n'existe pas dans la classe à l'instanciation de l'objet.

Merci beaucoup!

Lien vers le commentaire
Partager sur d’autres sites

Essaye une fonction récursive pour récupérer les valeur de tes objets :

File file = new File("c:\\MyXMLFile.xml");

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse(file);

doc.getDocumentElement().normalize();

NodeList nodeLst = doc.getChildNodes();

for (int s = 0; s < nodeLst.getLength(); s++) {

Node fstNode = nodeLst.item(s);

if (fstNode.getNodeType() == Node.ELEMENT_NODE) {

Element fstElmnt = (Element) fstNode;

String name=fstElmnt.getNodeName();

String value=fstElmnt.getNodeValue();

}

}

un truc comme çà la récursive en plus.

http://www.java-tips.org/java-se-tips/javax.xml.parsers/how-to-read-xml-file-in-java.html

par contre pour construire ton objet, tu as plus qu'à utiliser un doc xml je pense..

good luck :)

Je viens de regarder.

Cela répond à mon premier problème, à savoir: parser le xml venant d'internet vers un objet java.

Malheureusement, mon deuxième soucis est que je ne connais pas d'avance les balises XML. Je souhaiterais donc pouvoir instancier un objet générique à la réception du fichier XML mais que la classe de cet objet ne contienne aucun attribut.

Les attribut de cette classe seraient dont créés à la volée c'est à dire que je récupérerais le nom de la balise XML dans l'exemple ci-dessus <NOM> et sa valeur.

Je créerais un attribut dans ma classe générique:

 String NOM = "la_valeur_de_la_balise"

et ainsi de suite pour les autres balises.

Je répète que ces attributs n'existe pas dans la classe à l'instanciation de l'objet.

Merci beaucoup!

Lien vers le commentaire
Partager sur d’autres sites

Pour répondre à ma question, la génération d'attribut à la volée en android est impossible.

En effet, cela demande l'utilisation de framework java de manipulation de bytecode non supportés par android; la machine virtuelle android est une Davilk VM.

Merci à tous de vous être intéressés à mon sujet.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...