bonjour a tous, voila je voudrai parser un document xml que je créer.
J’ai reussi a le créé un fichier xml, au norme, associer a une dtd… tout fonctionne bien, qd je regarde ce que ca donne, ca donne bien l’arboresance.
Maintenent, je voudrai parcer un fichier xml. alors une fois encore, j’y arrive sauf… qd il y a des accents, il passe a la ligne et continu: un exemple:
ROOT
DATECOMMANDE
2005-12-06
/DATECOMMAND
COMMANDE
ARTICLE
NUMCOMMANDE
8584
/NUMCOMMANDE
TITRE
En priv
é
Carlos Goshn
/TITRE
.......
..
voila alors qu’il devrai aficher “En privé Carlos Goshn” en une seule ligne. et non pas [color=red]En priv
é
Carlos Goshn[/color]
Je pense que cela vien de la création du fichier, qd je rencontre un “é” je le remplace par sont code “é”
j’ai essayé aussi “é” mais la, il me bache direct, il en veux pas !!!
voila si qq’un a une idée pour qu’il ne me sépare pas les caractère accentuer… merci
ps: j’utilise
$value = $doc->create_text_node($row[‘commande_dateCommande’]);
$datearticle->append_child($value);
pour mettre la valeur
et si tu essayais de changer l’encodage? (iso-8859-1)
au passage je te signale que c’est un comportement tout à fait normal…
Bon alors j’ai réglé mon problème de codage grace aux fonctions utf8_encode et utf8_decode.
j’arrive a parser mon fichier créé MAIS… maintenent, je voudrai pouvoir parse mon fichier xml en fonction d’un fichier DTD.
Car la si mon fichier n’est pas formaté de la bonne facon, j’arrive a lire qd meme, mais avec toout qui est décalé…
Donc je n’ai pas trouvé de fonction dans la class DOM qui fait ca… si qq’un a une idée…
es-ce a la création qu’il faut le faire?
ps: code de mon parser
if(!$dom = domxml_open_file($file)) {
echo "Erreur d'analyse du document\n";
exit;
}
$root = $dom->get_elements_by_tagname("root");
$root = $root[0];
$dtedujour = $root->first_child();
echo "***************dte**************<br>";
echo ' - ' . utf8_decode($dtedujour->get_content()) . "\n";
$commande = $dtedujour->next_sibling();
while($commande) {
//print_r($child);
$article = $commande->first_child();
echo "*****************Article suivant****************<br>";
while($article) {
//print_r($child2);
$item = $article->first_child();
while($item) {
echo ' + ' . utf8_decode($item->get_content()) . "\n";
$item = $item->next_sibling();
}
echo "*****************client de l'article****************<br>";
$article = $article->next_sibling();
}
echo "*****************commande suivante****************<br>";
$commande = $commande->next_sibling();
}
code de ma creation:
$row = mysql_fetch_array($resultatXML);
$doc = domxml_new_doc('1.0');
$doc->encoding = "UTF-8";
$doc->name = "commande";
//Creation de l'element root
$element = $doc->create_element('root');
$root = $doc->append_child($element);
//Creation de l'element datedujour
$element = $doc->create_element('datedujour');
$datedujour = $root->append_child($element);
$value = $doc->create_text_node(utf8_encode(date("Y-m-d")));
$datedujour->append_child($value);
while ($row = mysql_fetch_array($resultatXML)){
//Creation de l'element commande
$element = $doc->create_element('commande');
$commande = $root->append_child($element);
//Creation de l'element article
$element = $doc->create_element('article');
$article = $commande->append_child($element);
.........
etc
------
$doc->dump_file('/var/www/html/test/TestPerso.xml');
voila; si qq’un a une idéé
Une petite idée pour valider mon fichier xml??