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

Bibliothèques tierces Python Discussion :

[ElementTree] Supprimer un attribut


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut [ElementTree] Supprimer un attribut
    Salut,

    en voulant transformer ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xml>
    <variable name="Conductivity" type="70" id="10" flags="1"/>
    <function name="TempCalib" id="4"/>
    </xml>
    en ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version='1.0' encoding='ascii'?>
    <xml>
    <variable><type>70</type><flags>1</flags><name>Conductivity</name><id>10</id></variable>
    <function><name>TempCalib</name><id>4</id></function>
    </xml>
    je me retrouve avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version='1.0' encoding='ascii'?>
    <xml>
    <variable flags="1" id="10" name="Conductivity" type="70"><type>70</type><flags>1</flags><name>Conductivity</name><id>10</id></variable>
    <function id="4" name="TempCalib"><name>TempCalib</name><id>4</id></function>
    </xml>
    car le je sais pas comment supprimer un attribut... quelqu'un a une idée? Le but est de remplacer les attributs par des éléments fils.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import xml.etree.ElementTree as ET
    import Tkinter
     
    def AttribsToElements(fnamein, fnameout):
        tree = ET.parse(fnamein)
        for element in tree.getiterator():
            for attrib in element.keys():
                keytag = ET.SubElement(element, attrib)
                keytag.text = element.get(attrib)
        tree.write(fnameout, encoding='ascii')
     
    if __name__ == "__main__":
     
        AttribsToElements("test.xml", "full_test.xml")
    A+

    Pfeuh

  2. #2
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    element.attrib.pop(attrib)
    J'ai trouvé une solution. Elle ne me plait pas trop car elle part du principe que les attributs sont un dictionnaire. Ce qui est vrai pour l'instant, mais dans la doc de ElementTree il est dit que ça peut changer dans l'avenir.

    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
     
    import xml.etree.ElementTree as ET
    import Tkinter
     
    def AttribsToElements(fnamein, fnameout):
        tree = ET.parse(fnamein)
        for element in tree.getiterator():
            for attrib in element.keys():
                keytag = ET.SubElement(element, attrib)
                keytag.text = element.get(attrib)
                element.attrib.pop(attrib)
        tree.write(fnameout, encoding='ascii')
     
    if __name__ == "__main__":
     
        AttribsToElements("test.xml", "full_test.xml")

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

Discussions similaires

  1. [2.x] [CKEditor] Supprimer l'attribut required
    Par stc074 dans le forum Symfony
    Réponses: 4
    Dernier message: 26/01/2013, 18h53
  2. [XSLT] Supprimer certains attributes xmlns
    Par Josy dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 22/09/2010, 18h21
  3. comment supprimer un attribut ou un element d un fichier xml
    Par ryoussef19 dans le forum Visual C++
    Réponses: 11
    Dernier message: 07/08/2007, 14h16
  4. XMLCursor : Supprimer un attribut
    Par Sylvain James dans le forum XMLRAD
    Réponses: 4
    Dernier message: 02/10/2003, 16h57

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