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 :

Xml avoir deux balise identique au meme niveau/noeud ?


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Xml avoir deux balise identique au meme niveau/noeud ?
    bonjour a tous !

    voici mon code :
    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
     
    #!/usr/bin/env python2
    #
    #-*- coding: iso8859-1- -*-
     
    from xml.dom            import minidom
    from xml.dom.minidom    import Document 
     
     
    print " nous allons creer un fichier ! Veuillez ecrire le nom du fichier "
     
    fichier = raw_input()
    jouvrelefichier = open(fichier + ".xml", 'w')
    Doc_virtuel = Document()
     
    xmltag = Doc_virtuel.createElement("root")
    xmlchild = Doc_virtuel.createElement("child")
     
    xmlchild.appendChild(Doc_virtuel.createTextNode("hello world !"))
     
    xmltag.appendChild(xmlchild)
    xmltag.appendChild(xmlchild)
    Doc_virtuel.appendChild(xmltag)
     
    donne_cree = Doc_virtuel.toxml()
    jouvrelefichier.write(donne_cree) 
     
    print Doc_virtuel.toxml()
    je souhaite tout simplement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" ?>
       <root> 
              <child></child>
              <child name="enfant">hello world !</child>
       </root>
    mais impossible ....
    est-il possible d'avoir plusieur balise <child> au meme niveau ???

    et je ne comprend pas pourquoi lorsque je fais un tel code :
    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
    #!/usr/bin/env python2
    #
    #-*- coding: iso8859-1- -*-
     
    from xml.dom            import minidom
    from xml.dom.minidom    import Document
     
     
    print " nous allons creer un fichier ! Veuillez ecrire le nom du fichier "
     
    fichier = raw_input()
    jouvrelefichier = open(fichier + ".xml", 'w')
    Doc_virtuel = Document()
    xmltag = Doc_virtuel.createElement("root")
    xmlchild = Doc_virtuel.createElement("child")
     
    n=0
    while n<5:
            print n
            xmltag.appendChild(xmlchild)
            xmltag.appendChild(xmlchild)
     
            Doc_virtuel.appendChild(xmltag)
            xmlchild.setAttribute("id", str(n) )
            n=n+1
     
    donne_cree = Doc_virtuel.toxml()
    jouvrelefichier.write(donne_cree)
     
    print Doc_virtuel.toxml()
    que je n'obtien pas qqch comme sa :

    <root id=1>
    <child></child>
    ....
    </root id=2>
    <root>
    <child></child>
    ....
    </root id=3>
    <root>
    <child></child>
    ....
    </root>
    .....

    il m'ecrase toujour les premiere boucle pour me mettre la dernier ??


    Merci

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Extrait de la doc:
    Node.appendChild(newChild)¶
    Add a new child node to this node at the end of the list of children, returning newChild. If the node was already in in the tree, it is removed first.

    Node.insertBefore(newChild, refChild)¶
    Insert a new child node before an existing child. It must be the case that refChild is a child of this node; if not, ValueError is raised. newChild is returned. If refChild is None, it inserts newChild at the end of the children’s list.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 304
    Points : 36 804
    Points
    36 804
    Par défaut
    Certes, certes mais les documents XML avec des noeuds contenants plusieurs fils avec le même tag ne sont pas 'interdits'.
    Ils peuvent être construits en utilisant d'autres "primitives", "techniques" de la bibliothèque XML telle que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from xml.etree.ElementTree import \
        Element as E, \
        SubElement as SE, \
        tostring
     
    root = E('root')
    se = SE(root, 'child')
    se.text = 'first'
    se = SE(root, 'child')
    se.text = '2nd'
     
    print tostring(root)
    print 'done'
    - W

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Ok Merci je ne m'y attendais absolument pas
    je ferais plus attention la dessus malgres que l'anglais me rebute

Discussions similaires

  1. [XSD] ayant deux balises identiques
    Par zulot dans le forum Valider
    Réponses: 2
    Dernier message: 05/02/2010, 08h37
  2. Avoir deux colorbars sur un meme graphique
    Par masterced32 dans le forum MATLAB
    Réponses: 1
    Dernier message: 13/07/2007, 10h51
  3. Réponses: 2
    Dernier message: 15/03/2006, 18h32
  4. Récupérer du texte d'un fichier xml entre deux balises
    Par manutudescends dans le forum Format d'échange (XML, JSON...)
    Réponses: 24
    Dernier message: 30/11/2005, 18h29
  5. Avoir deux ip pour un même poste
    Par Michaël dans le forum Réseau
    Réponses: 8
    Dernier message: 19/07/2005, 18h59

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