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>
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;
}
}
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;
}
}
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);
}
}
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();
}
}
}
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();
}
}
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();
}
}
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 !