Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
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 08/04/2005, 17h21   #1
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Par défaut XMLCursor, XPath et Namespaces

Bonjour,

Je suis en train de faire un ptit batch d'un document Excel XP au format XML vers une base de données.
Mais le souci c'est que bien que XMLCursor charge correctement le flux XML, toutes mes requêtes XPath ne donnent aucun résultat.

Voici un extrait (heureusement...) de la grappe xml :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
	<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
		<Author>SJ</Author>
		<LastAuthor>SJ</LastAuthor>
		<Created>2005-04-08T14:43:45Z</Created>
		<Company>TOTO</Company>
		<Version>10.3501</Version>
	</DocumentProperties>
	<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
		<DownloadComponents/>
		<LocationOfComponents HRef="file:///E:\Officexp\"/>
	</OfficeDocumentSettings>
</Workbook>
Donc si je fais un Cursor.Select('/Workbook') par exemple je devrais obtenir le noeud respectif en résultat mais non je n'obtient rien.
Le seul Select qui me renvoie quelque chose c'est : '/*' :-)

Alors je me demande si il n'y a pas une histoire de namespace là dessous, peut-être faut-il le préciser dans la requête XPath ?

Sylvain
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2005, 08h36   #2
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
Tu peux faire aussi un select * qui te permettra de naviguer dans la grappe
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2005, 12h45   #3
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
ah ca les namespaces (surtout ceux par défaut comme celui que tu as dans ta grappe) c'est la grosse M*@#!
ca sert globalemnt a rien sinon a nous embeter lorsque l'on veut fire un trverse dans lagrappe un peu générique.
l'idée la plus simple est de débarasser la grappe XML de son namespace par défaut avant de la charger dans le XMLCursor.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2005, 00h10   #4
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Citation:
Envoyé par RDM
ah ca les namespaces (surtout ceux par défaut comme celui que tu as dans ta grappe) c'est la grosse M*@#!
ca sert globalemnt a rien sinon a nous embeter lorsque l'on veut fire un trverse dans lagrappe un peu générique.
l'idée la plus simple est de débarasser la grappe XML de son namespace par défaut avant de la charger dans le XMLCursor.
C'est pas l'idéal, ça fait perdre beaucoup de temps car même avec XMLSpy on perd énormément de temps à virer les préfixes dans les attributs (j'ai environ 1500 éléments et 4500 attributs préfixés... dans le doc à traiter).
J'ai remarqué que la méthode XMLCursor.SelectFirst traffiquait avec les namespaces, et pas la méthode Select. Je n'ai pas pris le temps d'investiguer plus loin cependant.

D'autre part je m'en suis sorti en exportant les données en XML à partir d'Access 2003 et non pas Excel 2003.
Oh surprise il y avait bien un namespace de précisé en tête d'XML mais miracle, aucun élément ni attribut préfixé dans le corps des données.
Alors Banco, pour une fois Access m'a rendu service...

Merci à vous,
Sylvain
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2005, 11h57   #5
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
tu peux aussi le faire avec un méthode en Delphi
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2005, 14h53   #6
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Citation:
Envoyé par RDM
tu peux aussi le faire avec un méthode en Delphi
j'ai essayé mais pareil, impossible de monter le flux dans un XMLCursor, j'aurais pu essayer TXMLDocument pour voir ceci dit...
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2005, 12h29   #7
Membre régulier
 
Inscription : février 2005
Messages : 154
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 154
Points : 77
Points : 77
Envoyer un message via MSN à mchicoix
peux etre que tu peux utiliser Delphi en utilisant une librairie gratuite de regular expression pour dire : si tu vois ce type de caractère tu me remplaces par ça ou ça ... j'ai eu l'occasion d'utiliser cette technique pour lire des flux de données en SGML (balise non fermé !!!!)

voilu
mchicoix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2005, 14h06   #8
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Citation:
Envoyé par mchicoix
peux etre que tu peux utiliser Delphi en utilisant une librairie gratuite de regular expression pour dire : si tu vois ce type de caractère tu me remplaces par ça ou ça ... j'ai eu l'occasion d'utiliser cette technique pour lire des flux de données en SGML (balise non fermé !!!!)

voilu
ah oui d'accord c'est peut-être à ce genre de chose que pensait RDM. En effet c'est une soluce, mais comme mon besoin était ponctuel (je traitais une seule fois ce flux XML et je me servais d'XMLRAD pour aller plus vite et éviter de coder... :-) j'ai opté pour une solution plus rapide : l'export XML d'Access :-)
Merci !
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James 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 10h01.


 
 
 
 
Partenaires

Hébergement Web