[JS] deserialiser du XML....aide sur un script existant :)

deserialiser du XML....aide sur un script existant :) [JS] - HTML/CSS - Programmation

Marsh Posté le 10-04-2006 à 17:34:06    

Salut,
Voila je voudrais savoir si vous connaissiez des scripts pour faire de la sérialisation/déserialisation de XML en objets JS, car j'ai trouvé des scripts mais ça ne marche pas vraiment et entre les versions FireFox et IE c'est le gros calvaire  :cry:  
J'ai essayé de tester celui si mais pas moyen de le faire marcher à partir d'un fichier XML.... -> http://www.dotnetjunkies.com/WebLo [...] 21962.aspx
 
Par exemple, à partir d'une description XML :
 
<window height="300" width="200" x="50" y="200">
     <label color="black">toto</label>
     <input type="text"></input>
     <button size="3" caption="OK"></button>
</window>
 
le script crée un objet window en JS avec tous les attributs et les objets que cette window contient.
 
Si quelqu'un a quoi que se soit a proposer je le remercie d'avance.


Message édité par ham_mer le 12-04-2006 à 11:11:08
Reply

Marsh Posté le 10-04-2006 à 17:34:06   

Reply

Marsh Posté le 10-04-2006 à 17:47:11    

Pour serializer il existe des trucs "tout fait" pour chacun des navigateurs:

  • sous IE tu as la propriété xml de chaque noeud, ça marche très bien
Code :
  1. xml.node


  • sous FF tu as XMLSerializer, que tu utilises ainsi
Code :
  1. new XMLSerializer().serializeToString(node);


  • Pour les autres navs, il faut que tu te fasses ta propre fonction ( c'est pas si dur, si tu galères trop je te montrerais)


Une fois que tu as tout ça tu peux faire:

Code :
  1. function serialize(node,level) {
  2.     if (node == null || typeof node != 'object') {return node};
  3.     if (window.ActiveXObject) {
  4.         //pour IE
  5.         return node.xml;
  6.     }else if (window.XMLSerializer) {
  7.         //pour FF
  8.         return new XMLSerializer().serializeToString(node);
  9.     }else {
  10.         //pour les autres
  11.         return TaFonctionManuelle(node);
  12.     }
  13. }


 
Pour désérializer c'est un peu la même histoire:

  • sous IE
Code :
  1. var docXML = new ActiveXObject("Microsoft.XMLDOM" );
  2. docXML.loadXML(xmlString);


  • sous FF

var  docXML = (new DOMParser()).parseFromString(xmlString,"text/xml" );[/code]

  • pour les autres, tu l'as dans le ...


Message édité par anapajari le 10-04-2006 à 17:47:48
Reply

Marsh Posté le 11-04-2006 à 10:26:40    

Merci bien meme si j'avais deja trouvé tout ça !
Par contre new XMLSerializer().serializeToString(node) crée bien un objet de type String en JS à partir du noeud XML ?

Reply

Marsh Posté le 11-04-2006 à 10:33:56    

ham_mer a écrit :

Merci bien meme si j'avais deja trouvé tout ça !
Par contre new XMLSerializer().serializeToString(node) crée bien un objet de type String en JS à partir du noeud XML ?


Bin si tu as déjà trouvé tu as du déjà essayé et donc savoir :o
Sin ty as typeof pour connaitre le type d'une variable en javascript

Reply

Marsh Posté le 11-04-2006 à 11:22:07    

Oui merci typeOf me servira pour passer du JS au XML.

Reply

Marsh Posté le 12-04-2006 à 11:09:07    

Je voulais savoir si quelqu'un avait deja réussit à faire marcher ce script de serialisation  
 
http://www.dotnetjunkies.com/WebLo [...] 21962.aspx
 
Parce que j'essaye désepérement d'en faire quelque pour déserialiser un fichier xml chose mais pas moyen...
 
 
a la fin de la page ils parlent de déserialisation avec ce code :
 

Code :
  1. var mySerializer=new XmlSerializer();
  2.  var myCustomerInfo=mySerializer.deserialize(Mydocument,MySchema);
  3.  alert(myCustomerInfo.Name);


 
Du coup je me suis dit que j'allais essayer chez moi  :D  
 
J'ai codé ceci :(les fichiers xml et DTT sont ceux pris en exemple sur le site)
 

Code :
  1. var req = null;
  2.                 //POur le fichier MyDocument, le fichier de données XML
  3.  if(window.XMLHttpRequest) // Firefox
  4.  {
  5.      req = new XMLHttpRequest();
  6.      req.open("GET", "custo.xml", false);
  7.   req.send(null);
  8.   //on crée un serializer XML
  9.   var serializer = new XMLSerializer();
  10.   alert(serializer.serializeToString(req.responseXML));
  11.   //on créer l'objet myDocument
  12.   var objDOMParser = new DOMParser();
  13.      Mydocument = objDOMParser.parseFromString(req.responseText, "text/xml" );
  14.  }
  15.  else if(window.ActiveXObject) // Internet Explorer
  16.  {
  17.      req = new ActiveXObject("Microsoft.XMLHTTP" );
  18.   Mydocument = new ActiveXObject("Msxml2.DOMDocument.3.0" );
  19.   Mydocument.loadXML(req.responseXML);
  20.   alert(Mydocument.loadXML(req.responseXML));
  21.  }
  22.  var req1 = null;
  23.                //Pour le fichier DTD
  24.  if(window.XMLHttpRequest) // Firefox
  25.     req1 = new XMLHttpRequest();
  26.  else if(window.ActiveXObject) // Internet Explorer
  27.     req1 = new ActiveXObject("Microsoft.XMLHTTP" );
  28.   
  29.  req1.open("GET", "schema.dtd", false);
  30.  req1.send(null);
  31.  alert(req1.responseText);
  32.  //on créer l'objet myDocument
  33.  var objDOMParser1 = new DOMParser();
  34.  MySchema = objDOMParser1.parseFromString(req1.responseText, "text/xml" );
  35.  var mySerializer=new XmlSerializer();
  36.  var myCustomerInfo=mySerializer.deserialize(Mydocument,MySchema);
  37.  alert(myCustomerInfo.Name);


 
Donc j'arrive a récupérer les données dans les fichiers mais la fonction de deserialisation ne marche pas...
Je me suis peut etre totalement gouré dans le code car ce n'est peut etre pas du tout les bon paramètres que je passe la la fonction ???

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed