Dans les exemples qui vont suivre, nous (dé)sérialiserons l'objet notreObjet issu de la classe ClasseDeNotreObjet.

Sérialiser un objet (en XML) dans une chaine de caractères :

ByteArrayOutputStream out =
new ByteArrayOutputStream();
XMLEncoder e = new XMLEncoder(out);
e.writeObject(notreObjet);
e.close();
str_notreObjetSerialise = out.toString();

Ici, on a sérialisé l'objet notreObjet dans une chaine de caractères str_notreObjetSerialise.
Le code est exactement le même si l'on veut sérialiser un tableau d'objets.

Désérialiser un objet (XML) à partir d'une chaine de caractères :

ByteArrayInputStream in =
new ByteArrayInputStream(
new String(str_notreObjetSerialise).getBytes());
XMLDecoder d = new XMLDecoder(in);
notreObjet = (ClasseDeNotreObjet) d.readObject();
d.close();

Ici, on a désérialisé l'objet notreObjet dà partir d'une chaine de caractères str_notreObjetSerialise.
Pour désérialiser un tableau d'objets, il faudra remplacer le transtypage ClasseDeNotreObjet par ClasseDeNotreObjet[].

Sérialiser un objet dans un fichier XML :

XMLEncoder e = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream("serialization.xml")));
e.writeObject(notreObjet);
e.close();

Désérialiser un objet à partir d'un fichier XML :

XMLDecoder d = new XMLDecoder(
new BufferedInputStream(
new FileInputStream("serialization.xml")));
notreObjet = (ClasseDeNotreObjet) d.readObject();
d.close();

Ce qu'il faut savoir :

Les classes XMLDecoder et XMLEncoder se trouvent dans le paquetage java.beans
Les classes ByteArrayInputStream et ByteArrayOutputStream, se trouvent dans le paquetage java.io.
La classe à (dé)sérialiser au format XML doit implémenter l'interface serializable, disposer d'un constructeur sans paramètres, et de tous les accesseurs en lecture/écriture utiles.
Attention : un accesseur en lecture sur l'attribut toto doit être nommé getToto, et l'accesseur en écriture doit être nommé setToto (attention à la casse,  Si un attribut ne possède pas d'accesseur en lecture il ne sera pas sérialisé. S'il possède un accesseur en lecture mais pas en écriture, alors une exception sera levée lors de la désérialisation).
Enfin, les valeurs des attributs ne doivent pas contenir de symboles pouvant corrompre l'XML, comme les signes < et >, les apostrophes, etc. Pensez à une adaptation préalable de vos données, comme par exemple le codage en Base64.