Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

XMLEncoder et java beans

2 réponses
Avatar
Vincent Hiribarren
Bonjour à tous,

j'ai de gros problèmes pour stocker des objets en XML. Je ne connais que
très peu les beans, base pour pouvoir utiliser XMLEncoder, mais
apparemment ce que je fais n'est pas assez bon, XMLEncoder ne me
stockant pas l'objet que je veux sauvegarder.

Voici un bean que je pense avoir créé, puisque XMLEncoder ne traite que
des beans :

public class SimpleBean implements Serializable {

private String truc;

public String getTruc() {
return "coucou";
}

public void setTruc(String machin){
truc = machin;
}

public SimpleBean(){
}

}

Bon, je cherche à stocker une instance de SimpleBean dans un fichier en
XML, j'utilise la classe suivante avec un main :

public class TestText {

public static void main(String[] args) {

FileOutputStream fos = null;
try {
fos = new FileOutputStream("Test.xml");
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
XMLEncoder e =
new XMLEncoder(newBufferedOutputStream(fos));
SimpleBean sb = new SimpleBean();
e.writeObject(new SimpleBean());
e.close();

}
}

Cependant, mon fichier xml ne contient que :

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.2_03" class="java.beans.XMLDecoder">
<object class="SimpleBean"/>
</java>


Bref : l'état "truc" d'un objet SimpleBean n'est pas sauvegardé.
Où serait l'erreur de programmation ?

Merci !

2 réponses

Avatar
Benoît Chauvet
Vincent Hiribarren wrote:
Bonjour à tous,


Salut

public String getTruc() {
return "coucou";
}


Ca serait pas plutôt :

public String getTruc() {
return truc;
}

;)

D'autre part, je crois que la plupart des serializer XML n'écrivent pas les
attributs s'ils ont leurs valeurs par défaut.

Au lieu de faire :

SimpleBean sb = new SimpleBean();
e.writeObject(new SimpleBean());

(ce qui déjà est illogique en soi : Tu instancies un premier bean, puis tu
en serialize un second. Passons)

Essaye plutot d'écrire :

SimpleBean sb = new SimpleBean();
sb.setTruc("Autre valeur");
e.writeObject(sb);

A mon avis, ca marchera mieux

Bon courage

--
Orabîg

Avatar
Vincent Hiribarren
In article <c4j15p$bu8$,
says...

D'autre part, je crois que la plupart des serializer XML n'écrivent pas les
attributs s'ils ont leurs valeurs par défaut.

Au lieu de faire :

SimpleBean sb = new SimpleBean();
e.writeObject(new SimpleBean());

(ce qui déjà est illogique en soi : Tu instancies un premier bean, puis tu
en serialize un second. Passons)


C'est juste des rémanences de divers codes de tests. J'avais oublié de
refaire ça un peu mieux avant de publier.
Sinon vous aviez raison, c'était logique mais je n'y avais pas pensé :
XMLEncoder n'écrit pas les valeurs par défauts.