Page 1 sur 1

serialisation XML (javascript)

Publié : 10 nov. 2005, 13:21
par arno.
Bonjour,
je voudrais creer un bout de XML, par exemple :

Code : Tout sélectionner

<fruit couleur="verte">pomme</fruit>
c'est pour l'envoyer ensuite via XMLHttpRequest.

Bon, depuis ff1.5, il y a e4x, mais en attendant, j'aimerais bien garder la compatibilte ff1.0.x
Du coup, je pense faire un truc du style :

Code : Tout sélectionner

var string = '<fruit couleur="verte">pomme</fruit>';
, mais ca risque de pas etre pratique, ni tres lisible si il y en a beaucoup et que je dois creer la chaine dans une boucle en fonction des differentes variables.
j'aimerais bien faire un truc du style :

Code : Tout sélectionner

var el = document.createElement("fruit");
el.setAttribute("couleur", "jaune");
text = document.createTextNode("pomme");
el.appendChild(text);
, et ensuite, tout convertir en chaine de caractere, mais je n'ai pas trouve le moyen de le faire. peut-etre que j'ai loupe une fonction qui permettrait ca.

est-ce que qqun sait si c'est possible ?

merci d'avance.

Publié : 10 nov. 2005, 15:25
par martin
En fait tu voudrais la propriété non standard innerHTML :) . Elle est implémentée sous firefox pour le html, mais je crois qu'elle n'y est pas encore pour du xhtml (et je crois avoir lu que c'est prévu pour les prochaines versions). Dans ce cas il faut la recréer soi même :
http://www.webfx.nu/dhtml/mozInnerHTML/ ... rHtml.html

pense aussi à encoder la chaine avant de l'envoyer.

Publié : 10 nov. 2005, 17:09
par Bobe
Sinon, tu as l’interface XMLSerializer() :

Code : Tout sélectionner

var serializer = new XMLSerializer();
var str = serializer.serializeToString(el);
http://xulplanet.com/references/objref/ ... lizer.html (non standard)

Équivalent standard (DOM3 Load & Save du W3C):

Code : Tout sélectionner

var serializer = document.implementation.createLSSerializer();
var str = serializer.writeToString(el);
Récent (2004) et non implémenté, sauf peut-être par Opera.

Publié : 14 nov. 2005, 11:20
par Invité
merci a tous les deux.
C'est XMLSerializer qui correspond le mieux a ce que je veux faire.
Par contre, dans mon cas (composant javascript d'une extension firefox), on n'a pas acces a cette interface (car pas ds le chrome).
Comme ca a l'air trop complique de reimplemanter ca avec les composants javascript, je pense utiliser la methode barbare en mettant tout dans des chaines.

Publié : 14 nov. 2005, 11:38
par arno.
oubli de pseudo