Creer fichier xml

crusty8x Messages postés 14 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 1 juin 2007 - 31 mai 2007 à 12:17
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 1 juin 2007 à 20:02
bonjour, je cherche à exporter ma base de données vers un fichier xml. j'utilise le code suivant:
<?php
require "conf.php3"; //fichier contenant des config diverses
$sql= connect_sql();
$q= mysql_query("select * from descripteurs order by nomd"); //je selectionne les données à exporter
mysql_close();
//je commence par cette chaine...
$xml = '<?xml version= "1.0" encoding="ISO-8859-1"?>';
$xml .='<!-- @(#)Alices cbb descriptor table-->';
$xml .='';
$xml .='';

while ($row = mysql_fetch_array($q)) //création des balises etc.....
{
  $xml . = '<Descriptor name="'.$row['nomd'].'">';
  $xml .= '<Type>'.$row['typed'].'</Type>';
  $xml .= '<Comment>'.$row['com'].'</Comment>';
  $xml .= '</Descriptor>';
}
  $xml .= '';
  $xml .= '';

$fp = fopen("carnetDescripteurs.xml", 'w+');
fputs($fp, $xml);
fclose($fp);
?>

bon jusque là normalement il me semble que c'est pas trop mal....mais lorsque j'ouvre mon fichier xml....j'ai une surprise assez marrante (regardez plutot),
<?xml version="1.0" encoding="ISO-8859-1"?><!-- @(#)Alices cbb descriptor table-->

<Descriptor name="Alpha">
        <Type>Real</Type>
</Type><Comment>Real</Type></Comment>
 </Descriptor>
<Descriptor name="Cls">
        <Type>Integer</Type>
        </Type><Comment>Real</Type>
        </Comment>
</Descriptor>
<Descriptor name="D_H_cel"><Type>Real</Type>
        </Type><Comment>Real</Type>
        </Comment>
</Descriptor>

donc j'ai des balises qui se créent toutes seules comme des grandes et
qui me font planté mon export...donc si vous avez une petite idée sur
ce probnlème je vous sereez très reconnaissant de m'aider !!!

14 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
31 mai 2007 à 12:57
Etooooooooonant !!!

Nous ne voyons pas d'autre explication...

Pour ma part, j'utilise la librairie DOM [PHP5] pour créer des fichier XML. C'est un peu contraignant à utiliser (la norme DOM est très lourde, rigide et peu économe en nombre de caractères, lignes de code) mais avec on a l'assurance d'avoir un fichier XML valide et surtout ça ouvre la porte à une mécanique puissante (traitement XSL, interrogation Xpath, services SOAP, ... ).

Ton exemple avec DOM serait :
<?php
// trucs mysql...

$doc = new DomDocument('1.0','ISO-8859-1');
$doc->appendChild( new DomComment('@(#)Alices cbb descriptor table') );

$alices = $doc->createElement('alices.descriptor.table');
$alices->setAttribute('version','1.0-0');
$doc->appendChild($alices);

$uml = $doc->createElement('UmlTableDeDescripteurs');
$uml->setAttribute('dynamic','anonymous,name-attrib');
$doc->appendChild($uml);

while ($row = mysql_fetch_array($q)) //création des balises etc.....
{
    $desc = $doc->createElement('Descriptor');
    $desc->setAttribute('name',$row['nomd']);
    $uml->appendChild($desc);
    $uml->appendChild( $doc->createElement('Type',$row['typed']) );
    $uml->appendChild( $doc->createElement('Comment',$row['com']) );
}
$doc->save('carnetDescripteurs.xml');

$_SESSION['user']['login'] = 'jug';
$_SESSION['user']['pwd'] = 'hophop';

?>
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
31 mai 2007 à 13:01
Note :
Les variables de sessions en bas de code se sont involontairement échappées de mon fichier de test sur serveur local (les coquines)... N'essayez même pas : le pwd 'hophop' n'a jamais servi a autre chose qu'a mes tests.
0
crusty8x Messages postés 14 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 1 juin 2007
31 mai 2007 à 14:07
mon autre problème c'est que je n'ai pas la possibilité de codé en PHP5.

mais merci J_G je note et je le garde pour une fois peut etre !!!!!
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 43
31 mai 2007 à 18:40
Salut

en meme temps. a ce que je vois, c'est du php3... php6 est en developpement tu sais...

  $xml .= '<Type>'.$row['typed'].'</Type>';
  $xml .= '<Comment>'.$row['com'].'</Comment>';

bon, si tu echapes tes vas avec htmlentities ca donne quoi ?

  $xml .= '<Type>'.htmlentities($row['typed']).'</Type>';
  $xml .= '<Comment>'.htmlentities($row['com']).'</Comment>';

une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crusty8x Messages postés 14 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 1 juin 2007
1 juin 2007 à 09:37
Je travaille dans un boite qui n'est pas à jour ça ce niveau là, je ne peut donc pas développer avec les techno supérieur à php4.

j'ai essayé avec htmlentities, ça ne donne rien de nouveau !!! je ne désèspere pas je cherche tjrs !!
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
1 juin 2007 à 09:52
<?php error_reporting( E_ALL | E_STRICT );

/*! @brief
* Salut, donc si tu cherches toujours, alors essayons de trouver le problème en ISOLANT les différents codes
* Car c'est bien connu... Diviser pour ...
*
* Bref, ici : on va contrôler la production de donnée et se concentrer sur l'XML OK ?
* Ce code fonctionne chez moi, j'obtiens (sans l'indentation) :

<!-- @(#)Alices cbb descriptor table-->
-
    
        <Descriptor name="a">
            <Type>a</Type>
            <Comment>a</Comment>
        </Descriptor>
        <Descriptor name="b">
            <Type>b</Type>
            <Comment>b</Comment>
        </Descriptor>
        <Descriptor name="c">
            <Type>c</Type>
            <Comment>c</Comment>
        </Descriptor>
    

ET TOI ?
*/

// Production des données
$array = array();
$array[] = 'a';
$array[] = 'b';
$array[] = 'c';

//je commence par cette chaine...
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>';
$xml .='<!-- @(#)Alices cbb descriptor table-->';
$xml .='';
$xml .='';

reset($array);
while ( list(,$v) = each($array) ) //création des balises etc.....
{
  $xml .= '<Descriptor name="'.$v.'">';
  $xml .= '<Type>'.$v.'</Type>';
  $xml .= '<Comment>'.$v.'</Comment>';
  $xml .= '</Descriptor>';
}
$xml .= '';
$xml .= '';

header('Content-type:text/xml');
echo $xml; // affichage

?>
0
crusty8x Messages postés 14 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 1 juin 2007
1 juin 2007 à 10:26
c'ets bon ton code marche aussi chez moi !!!!!
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
1 juin 2007 à 10:46
<?php error_reporting( E_ALL | E_STRICT );

/*! @brief
* OK... ALors maintenant, on va regarder ce qui sort de ta requête
* Malheuresement, je ne peux pas le tester moi...
*
* Alors, dis moi ce qui se passe chez toi.
*/

// TON CODE
require "conf.php3"; //fichier contenant des config diverses
$sql= connect_sql();
$q= mysql_query("select * from descripteurs order by nomd");//je selectionne les données à exporter

// MON CODE
header('Content-type:text/plain');
$i = 1;
while ( $assoc = mysql_fetch_assoc($q) ) {
    echo "--- Ligne $i ---\n"; $i++;
    foreach ( $assoc as $k=>$v ) echo "\t$k => $v\n";
}
?>
0
crusty8x Messages postés 14 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 1 juin 2007
1 juin 2007 à 10:50
voila ce qui me sort:
--- Ligne 1 ---
nomd => Alpha
numd => 374
typed => Real</Type>
com => Real</Type>
precision => sensitivity of active power to voltage</Comment>
nome => corys

j'ai pas tt mis mais c'est ça tt le long !!
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
1 juin 2007 à 11:00
Ok... Donc t'a vu ça puisque tu me le mets en pourpre : "Real</Type>"

Alors, quand tu fais ça, t'as quoi ?
<?php error_reporting( E_ALL | E_STRICT );
header('Content-Type:text/plain');

$text = 'Real</Type>';
echo htmlentities($text);
?>

Moi j'ai :
Real&lt;/Type&gt;
0
crusty8x Messages postés 14 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 1 juin 2007
1 juin 2007 à 11:04
j'ai trouvé mon pb, il vient de l'importation des données en faite, je ne me suis pas occupé des cette partie de l'application est elle était assez tordue !!! Lorsque mes valeurs étaient importé des fichers xml elle gardée leur balises !!!! voila dsl pour ce dérangement !!! merci à tous de m'avoir aider !!!
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 43
1 juin 2007 à 18:04
Salut

en fait j'avais raison...

une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
1 juin 2007 à 19:59
Et oui coucou... t'avais raison
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 43
1 juin 2007 à 20:02
Salut

tu peux faire reponse acceptee stp ?

une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0