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 :

Python 2.7 et minidom: Impossible de suprimer un Node d'un XML


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 34
    Points
    34
    Par défaut Python 2.7 et minidom: Impossible de suprimer un Node d'un XML
    Bonjour,
    Je travail sur Python 2.7 et je cherche à supprimer un Node d'un XML. J'utilise la libraire Minidom.
    Mon premier objectif etait de supprimer tous les Node de mon DOM au dur et à mesure via la fontion: previousSibling. Mais le Node n’était jamais supprimé (malgrés aucun message d'erreur).

    J'ai donc essayer de ne supprimer juste le premier Node de mon XML et de suivre un tutohttp://www.bitpapers.com/2012/04/pyt...-dom-tree.html

    Mais mon Node n'est également jamais supprimer du XML et je ne comprend pas porquoi.
    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
    29
    30
    31
    32
    from xml.dom import minidom
     
    def patchXML (Tree):
     
        if Tree is not None:
            tree = minidom.parse(Tree)
        else :
            xmldoc= minidom.parse(r"C:\Users\HAZANM\Documents\Aptana Studio 3 Workspace\test\test.xml")
     
     
            #Parse XML file to DOM tree
            doc_root = xmldoc.documentElement
     
     
            print "\nNodes\n==================="
            nodeList = xmldoc.childNodes
            for node in nodeList:
                print node.toprettyxml() 
     
     
            #Delete first node
            doc_root.removeChild(doc_root.childNodes[0])
     
            print "\nNodes\n==================="
            nodeList = xmldoc.childNodes
            for node in nodeList:
                print node.toprettyxml()
     
     
     
     
    patchXML(None);


    et voici les résultats du print:

    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
    Nodes
    ===================
    <Workstations>
    	<Computer>
    		<Processor>
                Pentium M
            </Processor>
    		<Memory>
                512MB
            </Memory>
    	</Computer>
    	<Computer>
    		<Processor>
                Pentium Core 2
            </Processor>
    		<Memory>
                1024MB
            </Memory>
    	</Computer>	
    	<Computer>
    		<Processor>
                Pentium Core Duo
            </Processor>
    		<Memory>
                1024MB
            </Memory>	
    	</Computer>	
    </Workstations>
     
    Nodes
    ===================
    <Workstations>
    	<Computer>
    		<Processor>
                Pentium M
            </Processor>
    		<Memory>
                512MB
            </Memory>
    	</Computer>
    	<Computer>	
    		<Processor>
                Pentium Core 2
            </Processor>
    		<Memory>
                1024MB
            </Memory>
    	</Computer>
    	<Computer>
    		<Processor>
                Pentium Core Duo
            </Processor>
    		<Memory>
                1024MB
            </Memory>
    	</Computer>
    </Workstations>
    Auriez vous des idées sur ce problème?

    Merci d'avance de toute votre aide,

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    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 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Salut,
    Est-ce que l'exemple que vous avez récupéré "fonctionne"?
    Pourquoi utiliser DOM pour manipuler du XML?
    Avez vous regarde les 'posts' qui trainent sur le sujet?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 34
    Points
    34
    Par défaut Python 2.7 et minidom: Impossible de suprimer un Node d'un XML
    Merci pour votre réponse,
    Alors j'ai regardé un peu plus prés.
    L'exemple ne marche pas. Par contre si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc_root.removeChild(doc_root.childNodes[1])
    , j'arrive a supprimer ma balise.

    Mais je n'arrive pas pas supprimé la seconde ou dernière.

    Ce qui est bizare, c'est que le XML en sortie est pleins d'espace et de retour à la ligne qu'i n'existait pas dans celui d'origine.
    Je fais fait un print sur la première balise XML, j'ai un résultat un peu bizarre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     print doc_root.childNodes[0]
    le résultat est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <DOM Text node "u'\n\t'">
    J'ai commencer à utiliser comme librairie ElementTree , mais mon Algo étant un peu complexe, utiliser Minidom me paraissait plus pratique, ayant besoin par la suite d'utiliser previousSiblin

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    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 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Salut,
    Je ne vois pas trop ce que vous cherchez a faire.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [SP-2007] Impossible de reconnaître l'espace de noms XML de ce composant WebPart
    Par Ricardo_Tubbs dans le forum SharePoint
    Réponses: 2
    Dernier message: 03/01/2011, 10h32
  2. [Toutes versions] impossible de suprimer ma barre perso
    Par patricktoulon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2010, 16h39
  3. impossible de parser le fichier hibernate.cfg.xml
    Par paolo2002 dans le forum Wildfly/JBoss
    Réponses: 9
    Dernier message: 30/05/2007, 17h39
  4. Réponses: 2
    Dernier message: 08/12/2006, 15h29
  5. Réponses: 7
    Dernier message: 02/10/2006, 17h55

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