IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

parsage xls à la ramasse


Sujet :

XML/XSL et SOAP

  1. #1
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut parsage xls à la ramasse
    bonjour a tous

    voila, il y a quelques jours, je postais déjà pour un problème similaire, mais rebelote, je m'embrouille pour un xsl de rien du tout...

    autant parser du xml classique ne me pose aucun problème, autant parser du xls devient pour moi un véritable casse tête...

    alors que mon problème est tout bateau ! mon xml est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <newdataset xmlns="">
    <uo msdata:roworder="0" diffgr:id="UO1">
    <id_uo>128</id_uo>
    <cd_uo>20000</cd_uo>
    <nom_uo>DSI / Etudes / Pôle Expertise Technique (PROD)</nom_uo>
    </uo>
    </newdataset>
    </diffgr:diffgram>
    et j'essaye de récupérer le id_uo.... mais j'ai beau faire tout les que je veux, il ne me retourne rien !

    une idée pour un récalcitrant xls siouplais ?

    merci
    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    [0] Il faut entendre que la racine diffgram vit dans l'espace de nom caracterisé par le uri urn:schemas-microsoft-com:xml-diffgram-v1 et que les elements newdataset, uo etc vivent dans l'espace de nom null (ou aucun). Je pense tous les soucis proviennent de ce fait. Il faut faire un effort de votre côté de lire les documentations sur ce sujet sérieusement à un moment donné.

    [1] Pour passer à côté le problème de l'espace de nom (juste pour un court moment), vous pouvez faire un chemin avec axis // sur id_uo. Comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sxpath="//id_uo";
    $nlist=$xpath->query($sxpath);
    foreach ($nlist as $node) {
        echo $node->nodeValue."\n";
    }
    C'est tout à fait valable mais ce n'est pas trop élégant: surtout pas trop élogant si vous ne connaissiez pas ce que c'est l'espace de nom dans le niveau pratique.

    [2] Pour faire travailler un chemin plus détaillé et faire utiliser proprement l'espace de nom, vous devrez lire quelques fonctions pertinentes dans la documentation de DOMXPath: je vais les illustrer pour vous faire voir comment ça fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $xpath->registerNamespace("ns","urn:schemas-microsoft-com:xml-diffgram-v1");
    $sxpath="/ns:diffgram/newdataset/uo/id_uo";
    $nlist=$xpath->query($sxpath);
    foreach ($nlist as $node) {
        echo $node->nodeValue."\n";
    }
    Et voilà.

  3. #3
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    yub,

    alors

    [1] merci beaucoup, ta première solution marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $xpath = new DOMXPath($doc);
    		    $sxpath="//id_uo";
    			$nlist=$xpath->query($sxpath);
    			foreach ($nlist as $node) {
    			    echo $node->nodeValue."\n";
    			}
    moi, j'avais fais pareil, mais sans mettre les deux // avant le id_uo... alors ca marchait pas folichon... maintenant, je sais qu'il faut mettre les 'axis' avant

    [2]
    ton explication semble vraiment interessante, mais dans ta deuxième manip, ce que je ne comprends pas, c'est pourquoi ne pas faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sxpath="/diffgr:diffgram/NewDataSet/uo/id_uo";
    ca marche, ca aussi ! en gros, je vois pas l'intérêt donc du registerNamespace
    pas tapeï ! pas tapeï!

    [3] en tout les cas, merci a toi, tu me dépannes en expliquant en plus ! c'est génial
    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [parsage] SAX ou DOM ?
    Par sixkiller dans le forum APIs
    Réponses: 4
    Dernier message: 10/05/2004, 10h40
  2. imprimer un .xls
    Par jo77 dans le forum ASP
    Réponses: 2
    Dernier message: 22/04/2004, 09h31
  3. XLS - Nom des balise
    Par lakrimo dans le forum XMLRAD
    Réponses: 2
    Dernier message: 05/02/2004, 11h12
  4. xml -> xls
    Par lennelei dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 03/03/2003, 01h18
  5. [VBA-E] ouvrir un fichier .xls sans executer les macro
    Par lae_t2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2003, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo