Php et xml
brudao
Messages postés
524
Date d'inscription
Statut
Membre
Dernière intervention
-
brudao Messages postés 524 Date d'inscription Statut Membre Dernière intervention -
brudao Messages postés 524 Date d'inscription Statut Membre Dernière intervention -
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);
}
}
}
?>
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:
- Php et xml
- Xml download - Télécharger - Édition & Programmation
- Easy php - Télécharger - Divers Web & Internet
- Office xml handler - Télécharger - Traitement de texte
- Driveimage xml - Télécharger - Sauvegarde
- Expert php pinterest - Télécharger - Langages
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.