[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:
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:
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)) |