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

Python Discussion :

compter le nombre de balise d'un fichier xml


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut compter le nombre de balise d'un fichier xml
    Bonjour dans mon code python j'ai défini une structure xml
    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
    23
    24
    25
    26
    <quil>
     
        <personne>
     
            <nomPrenom nom="Durant" prenom="Stephan">
                <indice nome="1" type="1"/>
                <indice nome="2" type="2"/>
     
            </nomPrenom>
     
     
        </personne>
     
        <personne>
     
            <nomPrenom nom="d" prenom="e">
                <indice nome="3" type="1"/>
                <indice nome="4" type="2"/>
            </nomPrenom>
     
     
        </personne>
     
     
     
    </quil>
    comment faire pour afficher le nombre des balises : personne ,nomPrenom et indice dans cette structure ?

  2. #2
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Bonjour

    Évidemment, je ne connais pas ce sur quoi porte ton XML (DTD, schéma ?).

    Combien peux-tu avoir de fils "NomPrenom" dans un élément "Personne" ?

    Sinon, cherche du côté de minidom et de getElementsByTagName. Cette fonction va te renvoyer tous les éléments de ton XML portant le tagname spécifié en argument sous forme de liste.

    Du coup (bout de code clairement incomplet) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lPersonnes = doc.getElementsByTagName("Personnes")
    print( len(lPersonnes) ) ## imprime le nb de noeuds "Personnes" trouvés
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    merci ,
    j'ai réussi à le calculer mais au fait ce que j'essaye de faire c'est de calculer le nombre des indices pour chaque personne et l'afficher
    exemple , le nom "durant a comme indice '1' et '2'
    tu as une idée ?

  4. #4
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    You're welcome.

    Tu peux faire un exemple de XML réel et comme ça on regardera ensemble l'algo. Mets ton code aussi.

    Si je prends ton exemple :
    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
    <quil>
            <personne>          
                    <nomPrenom nom="Durant" prenom="Stephan">
                            <indice nome="1" type="1"/>
                            <indice nome="2" type="
                    </nomPrenom>
            </personne>
            <personne>
                    <nomPrenom nom="d" prenom="e">
                            <indice nome="3" type="1"/>
                            <indice nome="4" type="2"/>
                    </nomPrenom>         
            </personne>       
    </quil>
    Pour Durant, tu veux faire la somme des indices ? soit obtenir 3 ?
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    voici l’exemple sur le quel je travaille
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
     
    document = """\
    <quil>
     
        <personne>
     
            <nomPrenom nom="Durant" prenom="Stephan">
                <indice nome="1" type="1"/>
                <indice nome="2" type="2"/>
                
            </nomPrenom>
            
     
        </personne>
        
        <personne>
     
            <nomPrenom nom="Joe" prenom="nancy">
                <indice nome="3" type="1"/>
                <indice nome="4" type="2"/>
            </nomPrenom>
            
     
        </personne>
     
        
     
    </quil>
    """
     
    from xml.dom import minidom                                          
    dom = minidom.parseString(document)
     
    def getText(nodelist):
        rc = ""
        for node in nodelist:
            if node.nodeType == node.TEXT_NODE:
                rc = rc + node.data
        return rc
     
    def handleSlideshow(quil):
     
        racines = quil.getElementsByTagName("personne")
        handleSlides(racines)
     
     
     
     
     
    def handleSlides(racines):
        for personne in racines:
            handleSlide(personne)
     
    def handleSlide(personne):
        handleNom(personne.getElementsByTagName("nomPrenom")[0])
        handlePrenom(personne.getElementsByTagName("nomPrenom")[0])
        handleIndice(personne.getElementsByTagName("indice")[0])
        handleIndice(personne.getElementsByTagName("indice")[1])
     
     
     
     
    def handleNom(nom):
        #print  "nom : "+getText(nom.childNodes)
        print  "nom : "+ nom.getAttribute("nom")
     
     
    def handlePrenom(prenom):
        print  "prenom : "+ prenom.getAttribute("prenom")
     
     
     
    def handleIndice(indice):
        print  "indice : "+ indice.getAttribute("nome")
     
     
     
     
     
    handleSlideshow(dom)
     
    lNom = dom.getElementsByTagName("nomPrenom")
    print"le nombre neoud des noms de personnes = ",( len(lNom) )
     
    lIndice = dom.getElementsByTagName("indice")
    print"le nombre neoud des indices des personnes = ",( len(lIndice) )
    je voudrais afficher le premier nom avec ses indices en les calculant bien sur
    et pareil pour le 2eme nom

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    je veux qu'il affiche durant avec les indices 1 et 2 puis Joe avec les indices 3 et 4
    il calcule d'abord pour durant et quand il termine de ses indices il passe au nom suivant qui est joe
    il s'agit pas de calculer la somme mais la valeur de chaque indice

  7. #7
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Si tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def handleIndices(personne):
            lIndicePersonne = []
            for ind in personne.getElementsByTagName("indice"):
                    lIndicePersonne.append(int(ind.attributes["nome"].value))
            return lIndicePersonne
    Tu obtiens pour le nœud personne donné en paramètre, tu obtiens les indices associés.

    EDIT: Tu veux juste associer le nom avec les indices.
    j'ai édité mon code

    RE-EDIT : mode boulet... correction du code
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

Discussions similaires

  1. Compter le nombre de lignes d'un fichier ?
    Par [ZiP] dans le forum Delphi
    Réponses: 5
    Dernier message: 22/03/2007, 14h08
  2. Compter le nombre de lignes d'un fichier excel
    Par Freerideuse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2006, 21h49
  3. Réponses: 2
    Dernier message: 23/05/2006, 18h45
  4. compter le nombre de fois qu'un fichier a été chargé
    Par phpaide dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/05/2006, 17h51
  5. Réponses: 2
    Dernier message: 02/03/2004, 19h38

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