IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM-XML-Javascript] Transformer du code xml en code xhtml


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 16
    Points
    16
    Par défaut [DOM-XML-Javascript] Transformer du code xml en code xhtml
    Bonjour tout le monde,

    Je rencontre un probleme en essayant de parser mon document xml pour le transformer en xhtml. Je précise que je suis débutant en ajax.

    Je recois en fait une reponse SOAP 1.2 de mon server qui contient du code xml que je veux intégrer dans ma page web.

    Code XML recu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?xml version='1.0' encoding='UTF-8'?>
    <SOAP-ENV:Envelope 
       xmlns:SOAP-ENV='http://www.w3.org/2003/05/soap-envelope'
       xmlns:xsd='http://www.w3.org/2001/XMLSchema'
       xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
     <SOAP-ENV:Body>
    <SearchObsbyObsvResponse>
    <Obs xmlns:xsi="http://www.w3c.org/2001/XMLSchema-Instance">
    	<specie>Golden Eagle</specie>
    	<observer>test</observer>
    	<lat>51.708973</lat>
    	<long>-1.0468351</long>
    	<datetime>Tue Nov 02 15:20:21 GMT 2004</datetime>
    	<numberseen>20</numberseen>
    </Obs>
    <Obs xmlns:xsi="http://www.w3c.org/2001/XMLSchema-Instance">
    	<specie>Barnacle Goose</specie>
    	<observer>test</observer>
    	<lat>51.651276</lat>
    	<long>-1.0312163</long>
    	<datetime>Mon Oct 01 08:07:33 BST 2001</datetime>
    	<numberseen>18</numberseen>
    </Obs>
    </SearchObsbyObsvResponse> 
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    J'aimerai transformer ce code par l'intermédiaire du javascript en:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <ul>
    <li>Golden Eagle</li>
    <li>test</li>
    <li>51.708973</li>
    <li>-1.0468351</li>
    <li>Tue Nov 02 15:20:21 GMT 2004</li>
    <li>20</li>
    </ul>
    <ul>
    <li>Barnacle Goose</li>
    <li>test</li>
    <li>51.651276</li>
    <li>-1.0312163</li>
    <li>Mon Oct 01 08:07:33 BST 2001</li>
    <li>18</li>
    </ul>
    Je recois donc le body de ma reponse soap 1.2 et pour le parser j'utilise ce code javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    function onReadyStateChanged() {
      if (xmlhttp.readyState == 4) {
        if (xmlhttp.status==200) { // http return code 200 - OK
    		var xmlDoc = xmlhttp.responseXML.documentElement;
     
    		var ObsList = xmlDoc.getElementsByTagName("Obs");
     
    		alert(ObsList.length);
     
    		if (ObsList.length != 0) {
     
    			var f = document.createDocumentFragment();
     
    			for(i = 0; i<ObsList.length; i++) {
    				var e = document.createElement("ul");
    				var node = ObsList.item(i);
    				while(node.hasChildNodes()){
    					var li = document.createElement("li");
    					li.appendChild(node.firstChild.nodeValue);
    					e.appendChild(li);
    					node = node.nextSibling;
    				}
    				f.appendChild(e);
    			}
    			document.getElementById("divContent").appendChild(f);
    		}
    	}
      }
    }
    Mais e est null lorsque je le rajoute à mon DocumentFragment.

    Quelqu'un pourrait-il m'expliquer pourquoi ??

    Merci d'avance

    Romain

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    li.appendChild(node.firstChild.nodeValue);
    nodeValue est un String, pas un noeud XML.
    ==>document.createTextNode
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    merci pour ta réponse rapide!

    mais meme en remplacant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    li.appendChild(node.firstChild.nodeValue);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    li.appendChild(document.createTextNode(node.firstChild.nodeValue));
    je n'obtiens rien :s

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    je m'auto repond si ca interresse quelque plus tard:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for(i = 0; i<ObsList.length; i++) {
    				var e = document.createElement("ul");
    				var nodes = ObsList[i].childNodes;
    				for(j = 0; j<nodes.length;j++){
    					var li = document.createElement("li");
    					li.appendChild(document.createTextNode(nodes[j].firstChild.nodeValue));
    					e.appendChild(li);
    				}
    				f.appendChild(e);
    			}
    			document.getElementById("divContent").appendChild(f);
    		}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. xml/Step "transformer le fichier xml en fichier stp"
    Par zbaida dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 17/06/2011, 11h17
  2. Réponses: 3
    Dernier message: 06/08/2007, 03h44
  3. [XML][XSLT]taille de fichier xml et transformation
    Par guil1 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 24/11/2006, 19h15
  4. [XML] Transformer un code XML en PHP
    Par leila2006 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/05/2006, 18h51
  5. Réponses: 2
    Dernier message: 31/10/2005, 22h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo