Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
791 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  indentation d'un flux XML - script PHP ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

indentation d'un flux XML - script PHP ?

n°1688201
___
Posté le 19-02-2008 à 09:39:29  profilanswer
 

Bonjour à tous,
 
après de nombreuses recherches, je ne trouve pas de fonction PHP simple qui à partir d'un flux XML comme celui-ci :
 

Code :
  1. <TOTO><BALISE>contenu</BALISE></TOTO>


 
soit tout simplement indenté en (html) :
 

Code :
  1. <TOTO>
  2.     <BALISE>
  3.         contenu
  4.     </BALISE>
  5. </TOTO>


 
pour l'affichage dans un page html !
 
Merci d'avance !

mood
Publicité
Posté le 19-02-2008 à 09:39:29  profilanswer
 

n°1689091
___
Posté le 20-02-2008 à 09:57:21  profilanswer
 

on dirait que personne n'a jamais essayé de faire cela ... ! c'est fou !?

n°1689122
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-02-2008 à 10:20:37  profilanswer
 

nan mais c'est surtout au choix  pas clair ou un peu stupide...
 
Tu veux transformer ton flux xml et un "code source" html indenté ou tu veux qu'à partir de ton code xml soit produit un code html qui affiche le 1er de manière indenté dans le navigateur?
 


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1689134
___
Posté le 20-02-2008 à 10:34:19  profilanswer
 

merci pour ton aide;
 
je veux transformer mon 1er flux XML (brut sans mise en forme) en code HTML pour pouvoir l'afficher dans le navigateur, soit plus précisément
 

Code :
  1. &lt;TOTO&gt;
  2. &nbsp;&nbsp;&lt;BALISE&gt;
  3. &nbsp;&nbsp;&nbsp;&nbsp;contenu
  4. &nbsp;&nbsp;&lt;/BALISE&gt;
  5. &lt;/TOTO&gt;


 
J'espère être plus clair !

n°1689305
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-02-2008 à 13:29:41  profilanswer
 

http://fr.php.net/xml => exemple #1


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1689445
FlorentG
Posté le 20-02-2008 à 16:17:32  profilanswer
 

Y'a moyen, exemple sous PHP5 :

Code :
  1. $xml =
  2.    '<?xml version="1.0" encoding="utf-8" ?>' . "\n" .
  3.    '<TOTO><BALISE>contenu</BALISE></TOTO>';
  4.  
  5.  
  6. $dom = new DomDocument;
  7. $dom->loadXML($xml);
  8. $dom->formatOutput = true;
  9.  
  10. echo $dom->saveXML();
 

Résultat :

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TOTO>
  3.  <BALISE>contenu</BALISE>
  4. </TOTO>



Message édité par FlorentG le 20-02-2008 à 16:17:40
n°1689462
___
Posté le 20-02-2008 à 16:47:22  profilanswer
 

je vous remercie pour vos réponses,mais FlorentG, j'obtiens l'erreur fatale  

Code :
  1. PHP Fatal error:  Class 'DOMDocument' not found


 
Je me demande pourquoi car d'après la doc PHP,  
"Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.".
 
pour info, j'ai PHP Version 5.2.3.
 
------
pour anapajari, ça ressemble à ce que je veux mais mon flux XML peut être faux, et cela ne m'affiche que les noms, en majuscule... (sans les < et > !)

n°1689502
FlorentG
Posté le 20-02-2008 à 17:21:00  profilanswer
 

Oula [:pingouino] Ca c'est pas normal

n°1690242
___
Posté le 21-02-2008 à 16:02:33  profilanswer
 

bon va falloir trouver une autre technique, je n'ai pas la main sur mon serveur PHP : il est configuré avec "'--disable-dom' "

n°1690255
FlorentG
Posté le 21-02-2008 à 16:28:12  profilanswer
 

Oh puté, ça c'est vraiment pas sympa [:pingouino] Ca risque même de poser d'énormes problèmes

mood
Publicité
Posté le 21-02-2008 à 16:28:12  profilanswer
 

n°1690264
___
Posté le 21-02-2008 à 16:46:35  profilanswer
 

c'est clair car ta technique, Florent, aurait été particulièrement intéressante !
 

Code :
  1. $html = preg_replace('!(&lt;.+&gt;)(.*)(&lt;/.+&gt;)!iU', '&nbsp;&nbsp;$1<br />&nbsp;&nbsp;&nbsp;&nbsp;$2<br />&nbsp;&nbsp;$3<br />',$html);


 
avec une expression régulière je parviens à cela :
 

Code :
  1. <?xml version="1.0" encoding="utf-8"  ?>
  2.     <html><body>test
  3.   </body>
  4. </html>


 
mais ce n'est pas le top... je travaille dessus.
 
Je pense qu'il faudrait un traitement récursif ou quelque chose comme ça...

n°1690266
matrixise
Posté le 21-02-2008 à 16:51:10  profilanswer
 

faut frapper l'admin system :d
lol

n°1946735
piratox
Posté le 02-12-2009 à 20:10:30  profilanswer
 

Voici la fonction que j'utilise pour indenter mon code HTML :
 

Code :
  1. private function indent () {
  2.  $stringIndented=NULL;
  3.  $indexStringIndented=0;
  4.  $indentationLevel=0;
  5.  for ($i=0;$i<strlen($this->html);++$i) {
  6.   $char=substr($this->html,$i,1);
  7.   switch ($char) {
  8.    case '<':
  9.     if (substr($this->html,$indexStringIndented+1,1)=='/') {
  10.      --$indentationLevel;
  11.      while(substr($this->html,$i,1)!='>') ++$i;
  12.      for ($j=0;$j<$indentationLevel;++$j) $stringIndented.="\t";
  13.      $stringIndented.=substr($this->html,$indexStringIndented,$i+1-$indexStringIndented);
  14.      $stringIndented.="\n";
  15.      $indexStringIndented=$i+1;
  16.     }
  17.     else if (substr($this->html,$indexStringIndented+1,1)!='/') {
  18.      while(substr($this->html,$i,1)!='>') ++$i;
  19.      if (substr($this->html,$i-1,1)!='/') {
  20.       for ($j=0;$j<$indentationLevel;++$j) $stringIndented.="\t";
  21.       $stringIndented.=substr($this->html,$indexStringIndented,$i+1-$indexStringIndented);
  22.       $stringIndented.="\n";
  23.       $indexStringIndented=$i+1;
  24.       ++$indentationLevel;
  25.      } else {
  26.       for ($j=0;$j<$indentationLevel;++$j) $stringIndented.="\t";
  27.       $stringIndented.=substr($this->html,$indexStringIndented,$i+1-$indexStringIndented);
  28.       $stringIndented.="\n";
  29.       $indexStringIndented=$i+1;
  30.      }
  31.     }
  32.     break;
  33.    default:
  34.     if (substr($this->html,$i+1,1)=='<') {
  35.      for ($j=0;$j<$indentationLevel;++$j) $stringIndented.="\t";
  36.      $stringIndented.=substr($this->html,$indexStringIndented,$i+1-$indexStringIndented);
  37.      $stringIndented.="\n";
  38.      $indexStringIndented=$i+1;
  39.     }
  40.   }
  41.  }
  42.  $this->html=$stringIndented;
  43. }

n°1946757
pataluc
Posté le 02-12-2009 à 22:16:08  profilanswer
 

[:pseudo ______]

n°1946879
stealth35
Posté le 03-12-2009 à 11:55:36  profilanswer
 

piratox > t'as pas DomDocument ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  indentation d'un flux XML - script PHP ?

 

Sujets relatifs
Upload PHP ok mais fichier déplacé = 0 octetsComment insérer un script php ?
Problème code erreur PHPProblème PHP/MySQL
devellopeur PHPreload d'une frame a partir d'une autre. PHP/javascript
Modifs script chat ASP[?PHP,HTML,JAVA?] problème avec une redirection
[Conseil] PHP & classe Formulaires [résolu] 
Plus de sujets relatifs à : indentation d'un flux XML - script PHP ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR