Php et xml

Fermé
brudao Messages postés 524 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 16 octobre 2014 - 3 déc. 2008 à 08:42
brudao Messages postés 524 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 16 octobre 2014 - 3 déc. 2008 à 12:09
Bonjour,

J'avais vu un exemple de code sur un forum qui parcourait un fichier xml.
j'ai modifié le code et ça marche sur ma machine mais lorsque je teste sur mon serveur ça ne marche pas.
exemple de mon xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<ServeurMySQL Nom="localhost">
<Date DateModif="02-12-2008"/>
<BaseDeDonnee nom='daobruno'>
<Table nom="connectes">
<Champ nom="ip" type="varchar(15)" null="NO" cle="" valeurDefaut="" autoincrementation="NO"/>
<Champ nom="timestamp" type="bigint(8)" null="YES" cle="" valeurDefaut="88" autoincrementation="NO"/>
</Table>
<Table nom="test">
<Champ nom="id" type="int(11)" null="NO" cle="PRI" valeurDefaut="" autoincrementation="YES"/>
<Champ nom="a" type="int(8)" null="YES" cle="" valeurDefaut="8" autoincrementation="NO"/>
<Champ nom="azer" type="varchar(5)" null="NO" cle="" valeurDefaut="a" autoincrementation="NO"/>
<Champ nom="testunique" type="varchar(6)" null="NO" cle="UNI" valeurDefaut="" autoincrementation="NO"/>
<Champ nom="kjh" type="varchar(7)" null="NO" cle="MUL" valeurDefaut="" autoincrementation="NO"/>
</Table>
</BaseDeDonnee>
</ServeurMySQL>

en fait lorsque la fonction croise "/" il arrete de lire le fichier. ici il arretera de lire le fichier a partir de la balise <Date.. />
je ne sais vraimemt pas pourquoi. et pourtant il marche sur moi ma machine
voici le code:
<?php
function lire_fichier_xml()
{
// on charge le fichier xml
$xml = simplexml_load_file("export_my_sql_xml2.xml");
// On appelle la fonction récursive
recursivite($xml);
}

/***************************************/
function recursivite($racine) {
// Pour chaque item, on récupere le nom et l'objet SimpleXML de la balise
foreach($racine as $nom=>$elem) {
// On vérifie qu'il y a un noeud enfant
//echo $racine;
if(trim($elem) == "") {
// si oui...
$enfants = $elem->children();
// on récupere les attributs s'ils sont présents
$attributs = $elem->attributes();
$NomTable=$attributs;
if(trim($attributs) != "")
{
$count=1;
if ($nom=="Table")
{

$GLOBALS['nom_table']=$attributs;
}
foreach($attributs as $index=>$contenu) {
if ($nom=="Table")
{
ajoute_table('localhost','root','','bdtest',$contenu);

}
$description[$count]=$contenu;
$count++;
}
}
if (isset($description[2]) && $description[2]!="")
{
$info_champ = array($description[1],$description[2],$description[3],$description[4],$description[5],$description[6]);
$nom_table_param2=$GLOBALS['nom_table'];
ajoute_champ('localhost','root','','bdtest',$nom_table_param2,$info_champ);
modifie_attribut('localhost','root','','bdtest',$nom_table_param2,$info_champ);
}
// comme on a un enfant, on réappelle la fonction
recursivite($enfants);
}
}
}

?>
A voir également:

1 réponse

maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
3 déc. 2008 à 11:50
Bonjour,

as tu vérifier que la version de PHP sur ton ordi est la même que celle sur le serveur?
0
brudao Messages postés 524 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 16 octobre 2014 14
3 déc. 2008 à 12:09
sur mon ordi c'est: php 5.2.6
sur le serveur c'est 5.2.0

j'utilise SimpleXML, qui est utilisable à partir de la version 5.
je ne sais pas trop mais je pense que ça ne doit pas poser de problème.
0