|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Bonjour,
Je ne sais si ma question est posée sur le bon forum (je ne trouve pas de forum dédié à DOM). Je bute sur le point suivant : J'ai besoin de remplacer soit le contenu d'un noeud, soit le noeud lui-même, par du code html que je récupère sous forme de chaîne de caractères. Exemples : 1) Le noeud courant est une balise . Je dois remplacer son contenu par une balise <img /> que j'ai récupérée sous forme de chaîne, de façon à obtenir dans le document Code :
<p class="MaClass"><img alt="" src="Mon_image" /></p> Chaine_xhtml = Code :
Merci grandement d'avance |
||
|
|
00
|
|
|
#2 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
ça serait beaucoup plus simple à faire avec Jquery...
__________________
Ma page 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 ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Eric GaridacciInscription : septembre 2005 Messages : 1 057 ![]() |
Salut,
On peut aussi se contenter de la méthode innerHTML qui est aussi faite pour ça.
__________________
N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ... |
|
|
00
|
|
|
#4 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
pas pour remplacer le node ... outerHTML n'est pas crossbrowser
__________________
Ma page 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 ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Merci de vos réponses.
Malheureusement, je ne programme pas en Javascript mais en php. (Ma question a été déplacée sur ce forum car elle avait, semble-t-il, plus de chances de recueillir des réponses.) Est-ce que ces méthodes ont un équivalent en php ? La difficulté à laquelle je me heurte est que j'ai un noeud d'un côté et une chaîne html de l'autre. Comment convertir la chaîne en noeud de façon, par exemple, à pouvoir utiliser quelque chose comme replaceChild ? Merci d'avance |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Tu veux la faire quand ta modification ?
Coté serveur ou quand la page est affichée ?
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#7 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
phpDOM ?
Je ne pense pas qu'il y ait un replaceChild ... a mon avis il va falloir passer par removeChild puis insertBefore sur le nextSibling du node qui vient d'être retiré
__________________
Ma page 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 ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Merci pour la rapidité de ta réponse, Didier
La modification doit être effectuée côté serveur. En fait, je modifie un document xhtml de travail en localhost pour générer le document final. Le document de travail contient des balises dont le contenu doit être remplacé par un autre (par exemple une balise <img />) ou qui doivent être remplacées par un bloc de balises xhtml. Je ne connais pas à l'avance les balises de remplacement. |
|
|
00
|
|
|
#9 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
tu as du rater mon post ?
__________________
Ma page 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 ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#10 | |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Citation:
|
|
|
|
00
|
|
|
#11 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
ha ben tu as ta réponse alors ^^
__________________
Ma page 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 ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Ce sur quoi je bute, c'est comment convertir une chaîne xhtml en noeud.
Une fois que je saurai le faire, je pense que j'arriverai à effectuer le remplacement. |
|
|
00
|
|
|
#13 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
__________________
Ma page 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 ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#14 | ||
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Bon,
Je commence à mettre en place une solution. Le code xhtml récupéré est placé dans la variable $module_node. Je crée un DomDocument $module, dans lequel je crée un élément div contenant le code xhtml récupéré. Code :
j'ai essayé Code :
$module_node = $module -> createElement('div', htmlspecialchars_decode($module_content)); Comment intégrer tels quels, sans conversion, les caractères < et > dans le noeud créé ? |
||
|
|
00
|
|
|
#15 | ||
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Façon de faire semble-t-il un peu plus propre :
Code :
Question cependant : comment retirer les balises <body> </body> qui dans le document encadrent le contenu du noeud ? |
||
|
|
00
|
|
|
#16 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
Citation:
un coup de saveHTML sur le nouveau DOMDocument et c'est ok (en gros c'est le même effet qu'un innerHTML, qui malheureusement n'existe pas en PHP)
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#17 | ||
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Merci, stealth, de ta réponse
Je ressens une confusion entre noeud et bloc html. Dans la fonction innerHtml présentée par Drupella dans la page DOM de PHP.net (http://www.php.net/manual/fr/book.dom.php) et que je reproduit ici Code :
Ce dont j'ai besoin, c'est de supprimer la balise <body> à l'intérieur du noeud, en conservant la structure DOM du noeud, de façon à pouvoir utiliser la fonction replaceNode, dont les deux arguments oldnode et newnode doivent être des noeuds. En effet, si j'ai bien compris, on ne peut pas remplacer un noeud par une chaîne html. |
||
|
|
00
|
|
|
#18 | ||||
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Voici la réponse à ma question
Ci-dessous une fonction qui convertit les enfants d'un noeud en noeud (et non en chaîne html). Cette fonction peut être utilisée pour remplacer un noeud simple (par exemple un paragraphe) par une structure plus complexe. Elle peut être aussi utilisée pour retirer une division (suppression des balises <div> </div> enveloppant une structure html. Code :
Mon code correspondant au post est donc (la chaîne html de remplacement est contenue dans $module_document) : Code :
Ouuuf !!! |
||||
|
|
00
|
|
|
#19 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Bonjour,
Je me suis enthousiasmé trop rapidement. J'ai en effet essayé avec un seul noeud contenu dans la balise enveloppe (par exemple <body><img /></body> ou <body><div></body>) et en ai conclu que la fonction marche pour un nombre indéterminé de balises contenues dans la balise enveloppe. En fait, dans le cas où un noeud contient plusieurs balises, importNode importe seulement la première balise. Je dois donc m'y prendre autrement. (J'entrevois une solution. Je la communiquerai quand je pourrai me remettre à mon PC.) A+ |
|
|
00
|
|
|
#20 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com