Ajouter l'entete DTD dans un fichier XML

Ajouter l'entete DTD dans un fichier XML - PHP - Programmation

Marsh Posté le 27-10-2005 à 10:43:22    

Bonjour,
 
Je cherche a faire un truc tout con mais je n'y arrive pas ca me gave. J'ai des fichiers XML de ce type :
 

Code :
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <Trees>
  3.   <Tree>
  4.     <Name>Chélicérates</Name>
  5.     <Node>
  6.       <Node>
  7.         <Name>Mérostomes</Name>
  8.       </Node>
  9.       <Node>
  10.         <Name>Arachnides</Name>
  11.        </Node>
  12.        <Name>Chélicérates</Name>
  13.     </Node>
  14.   </Tree>
  15. </Trees>


 
Donc vraiment des fichiers de base... Et j'aimerai arriver a ca :
 

Code :
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE arbre SYSTEM 'arbre.dtd'>
  3. <Trees>
  4.   <Tree>
  5.     <Name>Chélicérates</Name>
  6.     <Node>
  7.       <Node>
  8.         <Name>Mérostomes</Name>
  9.       </Node>
  10.       <Node>
  11.         <Name>Arachnides</Name>
  12.        </Node>
  13.        <Name>Chélicérates</Name>
  14.     </Node>
  15.   </Tree>
  16. </Trees>


 
Donc j'ai fais un truc tout con avec des fichiers mais ca foire :
 

Code :
  1. $contenuFic=file_get_contents($fichierxml) or die ("Erreur file_get_contents" );
  2. echo "avant remplacement, contenuFic : $contenuFic<br/>";
  3. if(!str_replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>","<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE arbre SYSTEM 'arbre.dtd'>",$contenuFic))
  4.     echo "remplacement loupé contenuFic : $contenuFic<br/>";//<?
  5. else echo "remplacement effectué, contenuFic : $contenuFic<br/>";
  6. file_put_contents($fichierxml,$contenuFic) or die ("Erreur file_put_contents" );


 
Donc ici avant remplacement $contenuFic est ok ca m'a bien récuperé tous le fichier XML. Apres mon str_replace marche mais $contenuFic est de la meme valeur qu'avant le str_replace... Bon apres le write marche aussi mais bon vu que le str_replace a pas vraiment fonctionné :/
 
Apres j'ai essayé en essayant d'ajouter un noeud fils à l'entete du document XML via la librairie DOM. Mais je n'arrive pas a recuperer l'entete du document, si je vais a la racine ca va directement a la 1ere balise Tree...
 
Quelqu'un a une idée ? Merci :)

Reply

Marsh Posté le 27-10-2005 à 10:43:22   

Reply

Marsh Posté le 27-10-2005 à 12:33:14    

str_replace : retourne la chaine (ou tableau) avec le contenu remplacé si ça a marché, sinon l'original, donc un !str_replace ne fonctionnera pas comme tu l'attends ...
 
et quand à DTD, DOM XML, XMLSchema, regardes ce thread.

Reply

Marsh Posté le 27-10-2005 à 14:04:00    

Ah ok ca n'a pas marché a priori mais ca renvoi qd meme qq chose...
Bon de tte facon vais surement laisser tomber la voie DTD et faire mes tests a la main, tant pis...

Reply

Marsh Posté le 27-10-2005 à 15:39:04    

Loizo a écrit :

Ah ok ca n'a pas marché a priori mais ca renvoi qd meme qq chose...

bah, oui, ça renvoi l'original ...
exemple :

Code :
  1. $strTest = str_replace('foo', 'bar', 'une phrase contenant des mots');
  2. echo $strTest; // => une phrase contenant des mots

-> RTFM :)
si ça n'a pas marché, c'est p.e. à cause de  
 
dans ton str_replace => "UTF-8"?>
dans ton xml => "UTF-8" ?>
 
mais c'est à priori, vu les que les antislashes d'echappement de HFR sont plus que moyens ...
ce serait cool de fixer çà, à l'occaz ...
[:acherpy]


Message édité par shakpana le 27-10-2005 à 15:39:35
Reply

Sujets relatifs:

Leave a Replay

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