Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML
XML Forum d'entraide sur XML avec PHP. Exemples : SimpleXML, OpenXML... Avant de poster -> FAQ XML, Cours XML et Sources XML
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 07/01/2008, 16h27   #1
Invité de passage
 
Inscription : mai 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 3
Points : 1
Points : 1
Par défaut [XMLReader] Obtenir les chemins XPath

Bonjour,
Je tente de lister les chemins xpath d'un XML

Le XML :
Code XML :
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 :
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!!
maquejp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 17h06   #2
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
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 ...
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 17h14   #3
Invité de passage
 
Inscription : mai 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 3
Points : 1
Points : 1
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.
maquejp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 17h32   #4
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
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 :
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 ...
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h10.


 
 
 
 
Partenaires

Hébergement Web