[XML-PHP] Parser - Validation DTD

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

Non, personne ?? :frowning:

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??