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

Réseau/Web Python Discussion :

[Python 3.6.9] Problème d'indentation avec les fichiers xml [Python 3.X]


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 45
    Par défaut [Python 3.6.9] Problème d'indentation avec les fichiers xml
    Bonjour,

    Depuis plusieurs jours, je suis confronté à un problème pour modifier des fichiers xml : impossible de maîtriser proprement l'indentation. J'ai essayé de multiples méthodes avec minidom ou etree mais à chaque fois, ou les nouvelles lignes n'ont aucune indentation ou l'indentation imposée vient s'ajouter à l'ancienne ce qui me donne vite des fichiers remplis d'espaces et retour à la lignes illisibles.

    Mon fichier xml
    Code XML : 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
    <?xml version="1.1" ?>
    <stations>
        <station id="ATE">
            <evt class="local" lat="45" lon="3" prof="10" mag="4" date="2020-05-05T12:23:00">
                <trace>toto.gif</trace>
            </evt>
            <evt class="tele" lat="45" lon="3" prof="10" mag="4" date="2020-05-05T12:23:00">
                <trace>toto.gif</trace>
            </evt>
        </station>
        <station id="ABJF">
            <evt class="local" lat="45" lon="3" prof="10" mag="4" date="2022-05-23T12:23:00">
                <trace>tutu.gif</trace>
            </evt>
            <evt class="tele" lat="45" lon="3" prof="10" mag="4" date="2022-05-23T12:23:00">
                <trace>tutu.gif</trace>
            </evt>
        </station>
    </stations>

    Mon script python
    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
    #! /usr/bin/python3
    # -*- coding: UTF-8 -*-
     
    import xml.etree.ElementTree as ET
     
    liste_Stations = ['URDF', 'VALF']
     
    stationsXML = './xml/stations_FR.old2'
    xml = ET.parse(stationsXML)
    stations = xml.getroot()
     
    for sta in liste_Stations:
     
        newSta = ET.SubElement(stations, 'station')
        newSta.attrib['id'] = sta
     
        newEvt = ET.SubElement(newSta, 'evt')
        newEvt.attrib['class'] = 'local'
     
        newTrace = ET.SubElement(newEvt, 'trace')
     
        temp = {
            'class' : 'local',
            'lat' : '0',
            'lon' : '0',
        }
     
        newEvt.attrib = temp
     
     
    print(ET.tostring(stations))

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Vous avez dans cet article un florilège de solutions à essayer.

    note: 3.6 est une version "ancienne".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 45
    Par défaut
    Merci, j'ai enfin résolu mon problème.

    Pour information, mon script est devenu maintenant :

    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
    #! /usr/bin/python3
    # -*- coding: UTF-8 -*-
    
    import xml.etree.ElementTree as ET
    
    def _pretty_print(current, parent=None, index=-1, depth=0):
        for i, node in enumerate(current):
            _pretty_print(node, current, i, depth + 1)
        if parent is not None:
            if index == 0:
                parent.text = '\n' + ('\t' * depth)
            else:
                parent[index - 1].tail = '\n' + ('\t' * depth)
            if index == len(parent) - 1:
                current.tail = '\n' + ('\t' * (depth - 1))
    
    liste_Stations = ['URDF', 'VALF']
    
    stationsXML = './xml/stations_FR.old2'
    xml = ET.parse(stationsXML)
    stations = xml.getroot()
    
    for sta in liste_Stations:
    
        newSta = ET.SubElement(stations, 'station')
        newSta.attrib['id'] = sta
    
        newEvt = ET.SubElement(newSta, 'evt')
        newEvt.attrib['class'] = 'local'
    
        newTrace = ET.SubElement(newEvt, 'trace')
    
        temp = {
            'class' : 'local',
            'lat' : '0',
            'lon' : '0',
        }
    
        newEvt.attrib = temp
    
    _pretty_print(stations)
    
    print(ET.tostring(stations))

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

Discussions similaires

  1. problème avec les fichiers xml
    Par tunwim dans le forum Langage
    Réponses: 1
    Dernier message: 27/03/2013, 15h22
  2. Module NetBeans en java : problème pour action avec un fichier .xml
    Par sebas64480 dans le forum NetBeans Platform
    Réponses: 0
    Dernier message: 23/04/2012, 16h44
  3. [XML] Problème d'encodage avec un fichier XML
    Par anto2b dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/12/2011, 13h58
  4. Réponses: 3
    Dernier message: 28/02/2006, 12h41

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