Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2006, 08h38   #1
Invité régulier
 
Inscription : janvier 2005
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 41
Points : 7
Points : 7
Par défaut [DOM] Problème bizarre avec DOM et XPath

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 <GPX> et contient les attributs suivants :

Code XML :
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/0" version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">


Si je supprime tous ces attributs pour ne garder que <gpx> la requète se met à marcher sous PHP (???!!??)

C'est quoi ce beans?

Merci
fragmonster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 08h45   #2
Invité régulier
 
Inscription : janvier 2005
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 41
Points : 7
Points : 7
Précision : 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...
fragmonster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 14h43   #3
Invité régulier
 
Inscription : janvier 2005
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 41
Points : 7
Points : 7
Pour ceux que ça intéresserait, voilà comment j'ai contourné le problème :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$DomGpx = new DOMDocument('1.0', 'utf-8');
$dom->preserveWhiteSpace = FALSE;
$XMLString = ereg_replace("<gpx(.[^>])*>", "<gpx>",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 <gpx> à l'aide d'une regexp.
Et juste avant de réécrire dans mon finchier je remets les attributs de <gpx> en place.
En faisant ç, ça marche impec.
fragmonster est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h42.


 
 
 
 
Partenaires

Hébergement Web