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

jQuery Discussion :

[jQuery + XML] conversion en html


Sujet :

jQuery

  1. #1
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut [jQuery + XML] conversion en html
    Bonjour,

    Pour le travail, je dois convertir une chaîne xml en html à l'aide de jquery, sous firefox, aucun problème mais pour Internet Explorer c'est autre chose.

    Ma chaine xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <slide theme_url="" theme_color="red">
       <text top="10px" left="10px" height="100px" width="200px" align="left">Contenu <b>de</b> la <i>zone</i> de <u>texte.</u></text>
       <img src="http://www.google.com/intl/en_ALL/images/logo.gif" top="10px" left="220px" />
    </slide>
    Le bout de code qui pose problème :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    function xmlToHtml(textarea){
    	var slide = $(textarea.val());
    	var theme_url = slide.attr('theme_url');
    	var theme_color = slide.attr('theme_color');;
    	content = $('<div></div>');
    	slide.children().each(function(){
    		var nodeName = $(this).get(0).nodeName.toLowerCase();
    			switch(nodeName){
    				case 'text':
    					var text = $('<div></div>');
    					text.css({
    						position: 'absolute',
    						left: $(this).attr('left'),
    						top:$(this).attr('top'),
    						height:$(this).attr('height'),
    						width:$(this).attr('width'),
    						align:$(this).attr('align')
    					});
    					text.append($(this).html());
    					content.append(text);
    					break;
    				case 'img':
    					var img = $('<img>');
    					img.css({
    						position: 'absolute',
    						left: $(this).attr('left'),
    						top:$(this).attr('top'),
    						height:$(this).attr('height'),
    						width:$(this).attr('width')
    					});
    					img.attr('src',$(this).attr('src'));
    					content.append(img);
    					break;
    				default:
    					alert('erreur');
    					break;
    			}
    		});
    		return content.html();
    }
    Dans cette fonction, je récupère le textarea qui contient la chaîne xml que je souhaite parser.
    Sous Internet Explorer je reçois une chaine vide
    et Sous Firefox je reçois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div style="position: absolute; left: 10px; top: 10px; height: 100px; width: 200px;">Contenu <b>de</b> la <i>zone</i> de <u>texte.</u></div><img src="http://www.google.com/intl/en_ALL/images/logo.gif" style="position: absolute; left: 220px; top: 10px;">

    Je viens de passer 2h sur ce problème et je ne sais toujours pas d'où peut venir cet erreur (je n'ai pas de message d'erreur qui s'affiche et j'ai testé sous IE6 et 7)

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    fais une recherche sur le forum avec" nodeCleaner" ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Mon problème ne vient pas de là.

    Lorsque je demande le nombre de node qui appartiennent à xml
    (le textarea contient le code xml que j'ai écris dans mon premier post)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xml = $($('textarea').val());
    alert(xml.length)
    Internet Explorer me renvoie 11 node et Firefox 1 node
    En affichant le détail, firefox me renvoie juste la node SLIDE, alors que IE 6 et 7 me renvoie :
    SLIDE
    TEXT
    #text
    B
    #text
    I
    #text
    U
    /TEXT
    IMG
    /SLIDE

    Donc déjà il y a un problème dans ma variable xml, mais je ne vois vraiment pas d'où ça peut venir



    --------------
    Bon ce n'est plus la peine de chercher, j'ai changer de méthode et ça marche maintenant (je n'essaye plus de parser le document xml avec jquery, mais avec ce petit bout de code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function parseXML(contenu){
    	var xmlDoc;
    	if($.browser.msie){
    		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    		xmlDoc.loadXML(contenu);
    	}
    	else{
    		parser=new DOMParser();
    		xmlDoc=parser.parseFromString(contenu,"text/xml");
    	}
    	return xmlDoc;
    }

  4. #4
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    J'utilise ca, ca marche très bien, avec l'option async=false.

    En revanche après avoir stocké/parsé mon xml dans un tableau,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var x = xmlDoc.getElementsByTagName('tagRepere');
    je n'arrive pas à le lire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    return html + 
    	'<li style="width:300px" ><table cellpadding=10px cellspacing=10px><tr><td><img alt="alt_a_mettre_ici" src="pic' +
        index + '.png"/></td><td><h1>'+  x[index].firstChild.nodeValue +'</h1><p>'+  x[index].lastChild.nodeValue +'</p></td></tr></tbody></table></li>';
        });
    si j'enleve nodeValue, il m'affiche "object Text", si je le met, il ne m'écrit rien (blank)

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut

    interprétation des nodes ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    en effet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    return html + 
    	'<li style="width:300px" ><table cellpadding=10px cellspacing=10px><tr><td><img alt="alt_a_mettre_ici" src="pic' +
        index + '.png"/></td><td><h1>'+  x[index].firstChild.firstChild.nodeValue +'</h1><p>'+  x[index].lastChild.firstChild.nodeValue +'</p></td></tr></tbody></table></li>';
        });

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    he oui si tu avais fait la recherche avec nodeCleaner .. tu aurais vu comment les nodes étaient interpétés et comment y remédier ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    je connais le mot node depuis moins de 24h,
    nodeCleaner
    quezako ?

    y a t il moyen de modifier le mode d'interprétation des nodes ?

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Une simple recherche sur le forum t'aurait mené à ceci :

    http://javascript.developpez.com/faq...M#DOMIEFirefox


    puis à ceci :

    http://www.developpez.net/forums/sho...d.php?t=475242
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    ...

  11. #11
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    ceci dit merci, j attaque le "portage" hors FF, ca va m etre très utile

  12. #12
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    Ok, merci SpaceFrog, dsl pour ces posts, ... interprétation des nodes, ok, c'est un truc bien fondamental quoi. Bon et bien je suis content ca tourne sur FF, IE, Opera, par contre ca parse pas sur Safari ?
    Tu sais pourquoi ?

    Cordialement

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Mets un alert dans ta fonction parseXML pour voir si il reconnait xmlDoc
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    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
      //load the xml
     
    	if (document.implementation && document.implementation.createDocument)
     
    	{xmlDoc = document.implementation.createDocument("", "", null);		}
     
    	else if (window.ActiveXObject)
     
    	{xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 	 	}
     
    	else{alert('Your browser can\'t handle this script');return;	}
     
    	xmlDoc.async = false;
     
    	alert('stepAlert');
     
    	xmlDoc.load("myDoc.xml");
     
    	//parse the xml
     
        var x = xmlDoc.getElementsByTagName('stepTag');
    je recois bien l'alerte "stepAlert"

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  16. #16
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    firefox : object XMLDocument
    safair : object Document

  17. #17
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Alors essaye de mettre des alerts pour voir comme Safari interprète les nodes ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  18. #18
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    avant ca ca signifie qqchose que FF alerte , et Safari ?

  19. #19
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Oui car un XMLDocument est un Document, mais l'inverse n'est pas vrai, principe d'heritage

  20. #20
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    est il possible que Safari ne reconnaisse pas la spec XML du document en question ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (document.implementation && document.implementation.createDocument)
     
    	{xmlDoc = document.implementation.createDocument("", "", null);		}
     
    	else if (window.ActiveXObject)
     
    	{xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 	 	}
     
    	else{alert('Your browser can\'t handle this script');return;	}
    J'ai oui dire aussi que Safari était un peu lourd avec les JS ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XSLT] XML->XML conversion attributs en balises
    Par ¤ Actarus ¤ dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/07/2005, 09h51
  2. Insérer du XML dans du HTML
    Par Shaman LizardKing dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 29/04/2005, 16h21
  3. Afficher du XML avec du HTML
    Par BipBip2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 05/04/2005, 10h45
  4. XML/XSL vers HTML: comment transformer les linefeed en <B
    Par AlainM dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/11/2003, 12h30
  5. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35

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