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

Langage PHP Discussion :

[DOM-PHP5] distingué les types de noeuds


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut [DOM-PHP5] distingué les types de noeuds
    Bonjour a tous

    Supposant que nous avons ce document XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <root>
        <section1>
            <donnée1>data</donnée1>
            <donnée2>data2</donnée2>
        </section1>
    </root>
    ma question est : comment distingué les balises "section" des balise "donnée"?
    j'ai bien vue qu'il y a les "nodeType" mais j'ai pas put les comprendre ! existe t-il un tuto simple pour les comprendre s'ils sont la solution?

    Merci et bon codage

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Bonjour,
    Le nodeType te permettra de connaitre le type du noeud, par exemple : document (noeud racine), une reference, un element, une entité, du texte, un commentaire...

    il te faut plutot utiliser nodeName :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (strpos($current_node->nodeName, 'section1') == 1)
        echo 'c\'est un noeud section';
    if (strpos($current_node->nodeName, 'donnée') == 1)
        echo 'c\'est un noeud donnée';
    Z.

  3. #3
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut
    Merci pour ta réponse
    Mais en fait je ne connais pas en avance les noms des sections et des données !

    ce que je veut dire c'est comment détecter que le nœud courant est un nœud de type section c-a-d qu'il ne contient pas de données.

    j'ais essayer un truck de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    if ($noeud->hasChildNodes()){
    //alors nœud de type section
    }else{
    //alors nœud de type données
    }
    mais je ne sait pas si c'est bien de le faire comme tel? et existe t-il un autre moyen de le faire?

    Merci Bon codage a tous ...

  4. #4
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut
    Salut a tous
    apparemment le code précédent ne marche pas !! juste pour ne pas induire quelqu'un en erreur !

    je trouve pas encore la solution une aide m'est précieuse

    merci

  5. #5
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    je l'ai pas testé, mais je t'ai mal compris.

    Pour tester si c'etait un noeud, j'ai utilisé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($node->nodeType == XML_ELEMENT_NODE) action;
    Z;

  6. #6
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut
    bon soir Z
    Bon voila je m'explique :
    mon application gère des fichiers XML de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <RACINE>
        <SECTION>
            <NOM>ALEX</NOM>
            <TEL>1234567</TEL>
        </SECTION>
        <ENTREPRISE>
            <RAISONSOS>TRIBAX</RAISONSOS>
            <RESP>FREDERIC</RESP>
        </ENTREPRISE>
    <RACINE>
    comme vous voyez j'appelle les balise "section" ceux qui ne contiennes pas d'information c-a-d les balise (SECTION et ENTREPRISE) dans mon exemple si dessus, le truc c'est que ces balises changes selon le contexte. j'appelle aussi balise "donnée" toutes les balises qui contienne de l'informations c-a-d les balises (NOM,TEL,RAISONSOS,RESP) dans mon exemple ces balises aussi changes avec le contexte.

    ainsi ma question est comment distinguer ci la balise actuelle (nœud) est de type donnée ou section?

    je doit crée une classe "myXML" pour gérer des fichiers XML cette classe doit être générique car je n'ai pas une idées sur le "$node->nodeName" ce luis ci change selon le contexte ainsi je doit distinguer les balise données de celles sections. en revanche j'ai des régles sur le fichier XML finale:

    1. Une balise section enveloppe un ou plusieurs balise données.
    2. les balises sections ne contiennent pas d'informations, elles sont la pour l'organisation.
    3. toutes les balises peuvent avoir des paramètre.
    4. les balises données ne peuvent en aucun cas avoir des fils.
    5. chaque balise données est une fille d'une balise section.


    voila un schéma générique d'un fichier XML utiliser par l'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <RACINE>
        <SECTION1>
             <DONNEE1>data</DONNEE1>
             <DONNEE2>data</DONNEE2>
        </SECTION1>
        <SECTION2>
             <DONNEE1>data</DONNEE1>
             <DONNEE2>data</DONNEE2>
        </SECTION2>
    </RACINE>
    voila j'espère avoir été claire avec mon explication

    Merci

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

Discussions similaires

  1. Distinguer les input[type=text] "disabled"
    Par neo932rcl dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 08/08/2009, 14h22
  2. Réponses: 2
    Dernier message: 29/07/2009, 23h09
  3. Réponses: 3
    Dernier message: 30/09/2008, 14h18
  4. [DOM] save et les noeuds fantôme
    Par tatatoui dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 21/06/2007, 00h55
  5. [DOM] PHP5 et XML comment ajouter un noeud dans un noeud précis?
    Par titou250 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 20/04/2006, 21h02

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