fragmonster 1 Posté(e) le 15 mars 2006 Partager Posté(e) le 15 mars 2006 Bonjour, j'utilise PHP5 et sa librairie DOM pour manipuler des fichier XML. Je dois, entre autres, executer une requète XPath sur un fichier. Le souci est que ma requète qui fonctionne parfaitement sous XMLSpy, ne marche pas du tout sous PHP. Par contre j'ai remarqué ceci : La balise racine de mon document s'appelle et contient les attributs suivants : Si je supprime tous ces attributs pour ne garder que la requète se met à marcher sous PHP (???!!??) C'est quoi ce beans? Merci PS - Ma requète originale est la suivante : /gpx/wpt[@lon=.$_POST["lon]." and @lat=".$_POST["lat"]."]" Elle marche sous XMLSpy et pas sous PHP Si je veux qu'elle marche sous PHP je suis obligé de la modifer comme suit : /gpx[*]/wpt[@lon=.$_POST["lon]." and @lat=".$_POST["lat"]."]" Je suis obligé de faire un "/gpx[*]", ce qui est absurde... Lien à poster
Gfx 0 Posté(e) le 15 mars 2006 Partager Posté(e) le 15 mars 2006 Serait-ce un bug dans une bibliotheque PHP ? Impossible, les API sont tellement bien foutues et bien testees... Lien à poster
fragmonster 1 Posté(e) le 15 mars 2006 Auteur Partager Posté(e) le 15 mars 2006 Bah c'est que je me dis finalement ... Ils nous ont bourré le mou à la sortie de PHP5 comme quoi la librairie DOM était maintenant en conformité avec le W3C et tout et tout et finalement, elle est peut être bien en conformité, mais elle est bourée de bug. Un autre bug pas mal concerne la mise en forme de la chaine de sortie. Il y a une propriété fomatOutput (true/false) qui permet de formater la chaine de sortie en indentant correctement les balises. Ca marche super bien lorsque le DomDocument est créé "from scratch", mais ça ne marche pas lorsqu'il est créé à partir d'un fichier XML .... bref, DOM et PHP5 c'est bien, mais dès qu'on sort un peu des sentiers battus, c'est pas encore ça... Lien à poster
fragmonster 1 Posté(e) le 16 mars 2006 Auteur Partager Posté(e) le 16 mars 2006 Pour ceux que ça intéresserait, voilà comment j'ai contourné le problème : $DomGpx = new DOMDocument('1.0', 'utf-8'); $dom->preserveWhiteSpace = FALSE; $XMLString = ereg_replace("])*>", "",file_get_contents($monfichier)); $DomGpx->loadXML($XMLString); ... traitement (requète XPath) ... $gpxTag->setAttribute ("version","1.0"); $gpxTag->setAttribute ("creator","Velotrainer - http://www.velotrainer.net"); $gpxTag->setAttribute ("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance"); $gpxTag->setAttribute ("xmlns","http://www.topografix.com/GPX/1/0"); $gpxTag->setAttribute ("xsi:schemaLocation","http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd"); $DomGpx->save($monfichier); Donc je récupère le contenu de mon fichier XML dans une string et je vire les attributs de à l'aide d'une regexp. Et juste avant de réécrire dans mon finchier je remets les attributs de en place. En faisant ç, ça marche impec. Lien à poster
Messages recommandés