Gestion de fichier xml par php

Gestion de fichier xml par php - PHP - Programmation

Marsh Posté le 15-10-2006 à 20:43:41    

Bonjour à tous,  
 
J'essaye d'afficher le nom de la racine xml, puis l'ensemble des titres du fichier, par une fonction php.  
 
Voici mon php :  
 
 

Code :
  1. <?php
  2. $dom= new domDocument('1.0', 'iso-8859-1');
  3. $dom->load('essai.xml');
  4. //$dom->validate();  
  5. $racine=$dom->documentElemnt;
  6. echo $racine->nodeName;
  7. ?>


 
 
 
 
Voici mon essai.xml :  
 
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
  2. <!DOCTYPE livre SYSTEM "livre.dtd">
  3. <livre titre="Annabac 2007">
  4.   <Chapitre titre="Maths">
  5.    <texte> Maths  Maths  Maths  Maths  Maths  Maths  Maths  Maths  Maths  Maths  Maths  Maths </texte>
  6.   </Chapitre>
  7.   <Chapitre titre="Physiques">
  8.    <texte> Physiques  Physiques  Physiques  Physiques  Physiques  Physiques  Physiques  Physiques  Physiques  Physiques  Physiques  Physiques </texte>
  9.   </Chapitre>
  10.   <Chapitre titre="SVT">
  11.    <texte> SVT  SVT  SVT  SVT  SVT  SVT  SVT  SVT  SVT </texte>
  12.   </Chapitre>
  13. </livre>


 
 
 
Et voici mon DTD :  
 
 

Code :
  1. <!ELEMENT Chapitre ( texte ) >
  2. <!ATTLIST Chapitre titre NMTOKEN #REQUIRED >
  3. <!ELEMENT livre ( Chapitre+ ) >
  4. <!ATTLIST livre titre CDATA #REQUIRED >
  5. <!ELEMENT texte ( #PCDATA ) >


 
 
 
 
Je l'ai fait en cours, cela marche très bien (nous sommes sous linux)  
 
Mais dès que je teste chez moi (c'est à dire : PC windows XP, seveur Free.)  
J'ai cette erreur :  
 
 

Code :
  1. Warning: domdocument() expects at least 1 parameter, 0 given in /mnt/124/free.fr/c/d/seb1395/xmltest/index.php on line 2
  2. Fatal error: Call to undefined function: load() in /mnt/124/free.fr/c/d/seb1395/xmltest/index.php on line 3


 
 
De plus voici ce que j'ai avec phpinfo :

Code :
  1. PHP Version 4.4.3-dev
  2. domxml
  3. DOM/XML  enabled 
  4. DOM/XML API Version  20020815 
  5. libxml Version  20616 
  6. HTML Support  enabled 
  7. XPath Support  enabled 
  8. XPointer Support  enabled 
  9. DOM/XSLT  enabled 
  10. libxslt Version  1.1.12 
  11. libxslt compiled against libxml Version  2.6.16


 
 
Merci pour votre aide !!!  
Je suis sur que c'est encore une histoire de " " ".  
 
Bonne fin de soirée.

Reply

Marsh Posté le 15-10-2006 à 20:43:41   

Reply

Marsh Posté le 16-10-2006 à 18:24:33    

domDocument n'a besoin d'aucun paramettre. C'est une erreur que de lui en donner et ce n'est pas par ce que le serveur de ton école n'affiche pas les "warning" que tout est parfait dans ton code.
 
Pour le "fatal error" il faudrait être sur que ton fichier existe bien dans ce dossier là et qu'il n'y a aucune différence de casse dans le nom du fichier (les serveurs de free comme tout serveur unix fait la différence entre une majuscule et une minuscule)

Reply

Marsh Posté le 16-10-2006 à 18:49:28    

omega2 a écrit :

domDocument n'a besoin d'aucun paramettre. C'est une erreur que de lui en donner et ce n'est pas par ce que le serveur de ton école n'affiche pas les "warning" que tout est parfait dans ton code.


 
C'est sympa, mais le warning dit exactement le contraire. Pareil pour le load(), c'est la fonction qui n'existe pas, pas une quelconque erreur sur le nom du fichier.
 
Pas la forme aujourd'hui omega2 :D

Reply

Marsh Posté le 16-10-2006 à 18:52:09    

omega2 a écrit :

domDocument n'a besoin d'aucun paramettre. C'est une erreur que de lui en donner et ce n'est pas par ce que le serveur de ton école n'affiche pas les "warning" que tout est parfait dans ton code.


Nan nan :o les paramètres c'possible.
http://fr.php.net/manual/fr/functi [...] struct.php

Citation :

Description
class DOMDocument {
__construct ( [string version [, string encoding]] )
}


 
Par contre dans le phpinfo sauf erreur de ma part il n'y a pas le support de DOM ( tout court) mais uniquement celui de DOMXML. De mémoire je crois que DOM est utilisable sur free mais uniquement en php5 et qu'il faut donc renommer les pages en .php5.

Reply

Marsh Posté le 16-10-2006 à 18:57:34    

A noter, pour rebondir sur ce que dit anapajari que la méthode load() fait partie de DOM (tout court :D) et pas de DOMXML (qui utilise un domxml_open_file) :)

Reply

Marsh Posté le 17-10-2006 à 10:43:17    

Voilà, sous PHP4 y'a l'extension DOMXML, assez bof et jamais finie, et sous PHP5 y'a la vraie, DOM

Reply

Sujets relatifs:

Leave a Replay

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