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

Bibliothèques et frameworks PHP Discussion :

[XML] [XMLReader] Obtenir les chemins XPath


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [XML] [XMLReader] Obtenir les chemins XPath
    Bonjour,
    Je tente de lister les chemins xpath d'un XML

    Le XML :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <CONF_2008 xsi:noNamespaceSchemaLocation="Conference.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <OrgLegalName>a</OrgLegalName>
    <OrgAcronym>a</OrgAcronym>
    ....
    <HumanResources>
    <HRFunction>a</HRFunction>
    <HRNberOfStaff>1</HRNberOfStaff>
    <HRCost>1</HRCost>
    <HRManMonth>1</HRManMonth>
    <HRComments>a</HRComments>
    </HumanResources>
    <E1Staff>1234567891</E1Staff>
    <I6OtherCurrentFunding>0</I6OtherCurrentFunding>
    </CONF_2008>
     
    Cela devrait ressembler à :
     
    /conf_2008/OrgLegalName
    /conf_2008/OrgAcronym
    ...
    /conf_2008/HumanResources
    /conf_2008/HumanResources/HRFunction
    /conf_2008/HumanResources/HRNberOfStaff
    ....
    /conf_2008/I6OtherCurrentFunding

    Pour le moment je suis à ce niveau (avec une multitude d'essais)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    function parseXML($node,$parent)
    {
        if (!$node->read())
            return;
        //If this is a text node then test for attributes.
        if ($node->nodeType==1)
        {
                /*print str_pad('',$node->depth,"_",STR_PAD_LEFT).$node->name.'/('.$parent.')<br>';*/
                print $parent.'<br>';
                $parent .= $node->name.'/';
     
        }
        //Call the recursive method again.
        parseXML($node,$parent);
     
    }
    $reader = new XMLReader();
    $reader->open("test_data.xml");
     
    parseXML($reader,"/");
    ?>
    La fonction idéale devait traiter n'importe quel XML et sortir les XPATH pour que l'on puisse les stocker dans une table d'une DB dans le but d'accéder au données stockées dans un XMLType (Oracle).

    Merci!!

  2. #2
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    Et alors qu'attends-tu de nous au juste ?
    Qu'on devine le problème que tu n'as pas jugé utile de décrire et qu'on fasse ton boulot à ta place ?
    Ton message ne contient même pas de question ...

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Hervé Saladin Voir le message
    Et alors qu'attends-tu de nous au juste ?
    Qu'on devine le problème que tu n'as pas jugé utile de décrire et qu'on fasse ton boulot à ta place ?
    Ton message ne contient même pas de question ...
    Bonjour,
    Heureux de te renconter...Soit

    J'aimerais profiter de l'expérience d'autres personnes qui pourraientt m'aiguiller sur une solution... Je ne poste jamais de message a moins d'avoir fait des recherches et essayer par moi même...

    Et puisque ce n'est pas clair, je n'arrive pas a écrire une fonction qui me retourne le résultat escompté... Y-a-t-il donc une personne de bonne composition pour m'aider, m'aiguillier pour la résolution de mon problème.

  4. #4
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    Désolé d'avoir été un peu sec, mais on voit tellement de messages incompréhensibles ou d'autres ressemblant à des devinettes ... c'est parfois un peu irritant.

    Pour ce qui est de ta fonction, je pense que partir sur une méthode récursive est un bon point de départ.
    Par contre, ton algo m'a l'air incomplet.
    Je verrais plutot un algo de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function parseXML($noeudCourant) {
       inserer_dans_bd($noeudCourant->getChemin()); // tu peux aussi afficher si tu veux ...
     
       foreach($noeudCourant->getNoeudsFils as $unNoeudFils)
          parseXML($unNoeudFils);
    }
    A toi de traduire ça en php avec l'api xml de ton choix en faisant les traitements voulus sur les données au passage ...

    Tu pourrais également ne rien enregistrer dans la bd ni afficher au cours du parcours de l'arborescence : tu ajoutes tes chemins dans un tableau que tu passes pas référence en paramètre de la fonction et que tu retournes à la fin, mais la l'algo devient un peu plus compliqué, mais plus propre et réutilisable ...

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/12/2015, 14h22
  2. Obtenir le chemin par défaut pour les fichiers de données.
    Par Cpas2latarte dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/08/2007, 16h38
  3. [XPATh] Filtrer les chemins
    Par Silver76 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/06/2007, 15h07
  4. [XSLT] fournir un chemin XPATH dans le source XML
    Par DarkNagash dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/05/2007, 19h48
  5. [JGraphT] Obtenir tous les chemin possibles
    Par pmartin8 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 02/06/2006, 19h26

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