CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] XStream dé/sérialisation

shadow57_2007
shadow57_2007
Niveau 5
15 mars 2014 à 18:04:48

Bonjour tout le monde, je viens à vous en ésperant résoudre mon problème,
j'ai fais toutes les recherches possibles, visiter tout les forums possible mais sans réponse convenable, j'espere donc pouvoir etre aider ici:

mon sujet:
à l'aide de Xstream je souhaite écrire un fichier xml avec des classes écrites auparavant,
dès lors j'aimerai pouvoir récupérer les objets dansles balises dans le xml que j'ai écris.
J'arrive parfaitement écrire mon xml, mais lorsque je le désérialise pour recuperer les données, la console m'affiche une erreur que je ne comprend pas, je ne comprends pas pourquoi je l'ai et je n'arrive pas la corriger

    • ****************
    • Mon fichier XML:*
    • ****************

<classes.Projet>
<manifestations>
<manifestation>ORIACTION</manifestation>
<manifestation>FORUM IT</manifestation>
</manifestations>
<enseignants>
<enseignant>dupuis pierre</enseignant>
<enseignant>martin eric</enseignant>
</enseignants>
</classes.Projet>

    • *******************
  • classe Enseignants *
    • *******************

public class Enseignants {

@XStreamImplicit(itemFieldName="enseignant")
ArrayList<String> enseignants = new ArrayList<String>();

public ArrayList<String> getEnseignants() {
return enseignants;
}

public void setEnseignants(ArrayList<String> enseignants) {
this.enseignants = enseignants;
}

public Enseignants(ArrayList<String> enseignants) {
super();
this.enseignants = enseignants;
}

public Enseignants() {
super();
// TODO Auto-generated constructor stub
}

public void add(String prof1){
enseignants.add(prof1);

}

@Override
public String toString() {
return "" + enseignants;
}
}

    • **********************
  • classe Manifestations *
    • **********************

public class Manifestations {

@XStreamImplicit(itemFieldName="manifestation")
ArrayList<String> manifestations = new ArrayList<String>();

public ArrayList<String> getManifestations() {
return manifestations;
}

public void setManifestations(ArrayList<String> manifestations) {
this.manifestations = manifestations;
}

public Manifestations(ArrayList<String> manifestations) {
super();
this.manifestations = manifestations;
}

public Manifestations() {
super();
// TODO Auto-generated constructor stub
}

public void add(String manif1){
manifestations.add(manif1);

}

@Override
public String toString() {
return "" +manifestations;
}

}

    • **************
  • classe Projet *
    • **************

public class Projet {

Manifestations manifestations = new Manifestations();
Enseignants enseignants = new Enseignants();

public Projet(Enseignants enseignant, Manifestations manifestation) {
super();
this.enseignants = enseignant;
this.manifestations = manifestation;
}

public Enseignants getEnseignant() {
return enseignants;
}

public void setEnseignant(Enseignants enseignant) {
this.enseignants = enseignant;
}

public Manifestations getManifestation() {
return manifestations;
}

public void setManifestation(Manifestations manifestation) {
this.manifestations = manifestation;
}

public Projet() {
super();
// TODO Auto-generated constructor stub
}

public void addEnseignant(String prof) {
// TODO Auto-generated method stub
enseignants.add(prof);
}

public void addManifestation(String manif) {
// TODO Auto-generated method stub
manifestations.add(manif);
}

}

    • *********************
  • classe Serialisation *
    • *********************

public class Serialisation {

public void FonctionSerialisation(){
try {
// Instanciation de la classe XStream
XStream xstream = new XStream(new DomDriver());

xstream.processAnnotations(Enseignants.class);
xstream.processAnnotations(Manifestations.class);

// Instanciation de la classe Projet
Projet projet = new Projet();
projet.addEnseignant("dupuis pierre");
projet.addEnseignant("martin eric");
projet.addManifestation("ORIACTION");
projet.addManifestation("FORUM IT");

// Instanciation d'un fichier test.xml
File fichier = new File("C:/Users/Brice/workspac/TutoXStream2/test.xm
l");

// Instanciation d'un flux de sortie fichier
FileOutputStream fos = new FileOutputStream(fichier);

try {
// Sérialisation de l'objet
xstream.toXML(projet, fos);
}

finally {
// On s'assure de fermer le flux quoi qu'il arrive
fos.close();
}
} catch (FileNotFoundException e)
{
e.printStackTrace();

} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}

    • ***********************
  • classe deserialisation *
    • ***********************

public class Deserialisation {

public void fonction_deserialisation(){

try {
// Instanciation de la classe XStream
XStream xstream = new XStream(new DomDriver());

FileInputStream fis = new FileInputStream(new File("C:/Users/Brice/workspace/TutoXStream2/test.x
ml"));

try {
// Désérialisation du fichier

Projet newProjet = (Projet) xstream.fromXML(fis);

// Affichage sur la console du contenu des balises
System.out.println(newProjet.getManifestation());

System.out.println(newProjet.getEnseignant());

} finally {
// On s'assure de fermer le flux quoi qu'il arrive
fis.close();
}

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}

    • ***
  • Main*
    • ***

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub

Serialisation S = new Serialisation();
S.FonctionSerialisation();
System.out.println("Main lancé");
Deserialisation D = new Deserialisation();
D.fonction_deserialisation();
}

}

    • *********************
  • Erreur de la console *
    • *********************

Main lancé
Exception in thread "main" com.thoughtworks.xstream.converters.reflection.Abs
tractReflectionConverter$UnknownFieldException:
No such field classes.Manifestations.manifestation
---- Debugging information ----
field : manifestation
class : classes.Manifestations
required-type : classes.Manifestations
converter-type : com.thoughtworks.xstream.converters.reflection.Ref
lectionConverter

path : /classes.Projet/manifestations/manifestation
class[1] : classes.Projet
version : 1.4.7
-------------------------------
at com.thoughtworks.xstream.converters.reflection.Abs
tractReflectionConverter.handleUnknownField(Abstra
ctReflectionConverter.java:495)

at com.thoughtworks.xstream.converters.reflection.Abs
tractReflectionConverter.doUnmarshal(AbstractRefle
ctionConverter.java:351)

at com.thoughtworks.xstream.converters.reflection.Abs
tractReflectionConverter.unmarshal(AbstractReflect
ionConverter.java:257)

at com.thoughtworks.xstream.core.TreeUnmarshaller.con
vert(TreeUnmarshaller.java:72)

at com.thoughtworks.xstream.core.AbstractReferenceUnm
arshaller.convert(AbstractReferenceUnmarshaller.ja
va:65)

at com.thoughtworks.xstream.core.TreeUnmarshaller.con
vertAnother(TreeUnmarshaller.java:66)

at com.thoughtworks.xstream.converters.reflection.Abs
tractReflectionConverter.unmarshallField(AbstractR
eflectionConverter.java:474)

at com.thoughtworks.xstream.converters.reflection.Abs
tractReflectionConverter.doUnmarshal(AbstractRefle
ctionConverter.java:406)

at com.thoughtworks.xstream.converters.reflection.Abs
tractReflectionConverter.unmarshal(AbstractReflect
ionConverter.java:257)

at com.thoughtworks.xstream.core.TreeUnmarshaller.con
vert(TreeUnmarshaller.java:72)

at com.thoughtworks.xstream.core.AbstractReferenceUnm
arshaller.convert(AbstractReferenceUnmarshaller.ja
va:65)

at com.thoughtworks.xstream.core.TreeUnmarshaller.con
vertAnother(TreeUnmarshaller.java:66)

at com.thoughtworks.xstream.core.TreeUnmarshaller.con
vertAnother(TreeUnmarshaller.java:50)

at com.thoughtworks.xstream.core.TreeUnmarshaller.sta
rt(TreeUnmarshaller.java:134)

at com.thoughtworks.xstream.core.AbstractTreeMarshall
ingStrategy.unmarshal(AbstractTreeMarshallingStrat
egy.java:32)

at com.thoughtworks.xstream.XStream.unmarshal(XStream
.java:1185)

at com.thoughtworks.xstream.XStream.unmarshal(XStream
.java:1169)

at com.thoughtworks.xstream.XStream.fromXML(XStream.j
ava:1049)

at fonctions.Deserialisation.fonction_deserialisation
(Deserialisation.java:27)

at principal.Main.main(Main.java:17)

________

sachant que je l'ai aussi pour la classe Enseignants,

j'espere que vous pourrez m'aider, Merci d'avance !

Odvie
Odvie
Niveau 10
15 mars 2014 à 20:45:23

Oula, j'ai franchement pas envie de lire tout ça, mais tes classes que tu (de)serialize, elles ont bien des accesseurs get set publics sur leurs membres?

Pseudo supprimé
Pseudo supprimé 15 mars 2014 à 21:23:38

No such field classes.Manifestations.manifestation

C'est explicite, non ? Il n'y aurait pas un 's' qui se serait perdu dans la nature ?

shadow57_2007
shadow57_2007
Niveau 5
16 mars 2014 à 14:40:30

non justement j'ai essayer avec le s, ou en changeant le nom de l'attribut et j'ai toujours le meme probleme

et oui j'ai générer les getters et les setters

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment