Bonjour

Depuis quelques jours je bute sur un problème, malgré ce que je peux lire et (essayer) de comprendre.
Un fichier XML en entrée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<?xml version="1.1" encoding="UTF-8"?>
<com.ibm.datastage.ai.dtm.ds:DSJobDefSDO xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:com.ibm.datastage.ai.dtm.ds="http:///com/ibm/datastage/ai/dtm/ds.ecore" xmi:id="134" lastModificationTimestamp="2017-03-16T16:02:09.748+0100" ...>
    <contains_JobObject xsi:type="com.ibm.datastage.ai.dtm.ds:DSLinkSDO" xmi:id="10" creationTimestamp="2017-03-16T15:06:33.999+0100" ...>
        <contains_FlowVariable xsi:type="com.ibm.datastage.ai.dtm.ds:DSFlowVariableSDO" xmi:id="100"  creationTimestamp="2017-03-16T15:06:33.999+0100" ...>
        </contains_FlowVariable>
    </contains_JobObject>
</com.ibm.datastage.ai.dtm.ds:DSJobDefSDO>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
import xml.etree.cElementTree as ET
tree = ET.parse(<le nom complet du fichier)
root = tree.getroot()
print(root.get('creationTimestamp')) # No problemo
for parent in tree.findall('.//contains_JobObject') :
    print(parent.get('creationTimestamp')) # No problemo
    for node in parent.findall('./contains_FlowVariable') :
        print(node.get('creationTimestamp')) # No problemo
Je récupère bien la valeur d'un attribut par son nom comme "creationTimestamp".
Toutefois, c'est là qu'est l'os, je voudrais aussi la valeur de xmi:id
J'en suis à me dire que je vais sérialiser le fichier dans une string (500 fichiers de ~250Ko..) et remplacer chaque "xmi:id" par "xmi_id", mais je ne trouve pas cela très ... ce que vous voulez.

Quelqu'un aurait-il l'amabilité de m'indiquer comment résoudre cela, comme cela se doit d'être fait avec les libs de base ?
Merci d'avance