Bonjour Voici un fichier xml ressemble a celui que je doit traiter, j'ai essayer au début le module LXML mais j'ai eu des difficultés, mnt j'utilise la librairie standard XML, je veux extraire le text "DONNEE" et les veleurs de "UPPER" et "LOWER" donc j'aai essayer d'extraire les child de <DATA-CONSTR>
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 <TOP-LEVEL-PACKAGES> <AR-PACKAGE> <SHORT-NAME>Interfaces</SHORT-NAME> <ELEMENTS> <DATA-CONSTR> <SHORT-NAME>DONNEE 1</SHORT-NAME> <DATA-CONSTR-RULES> <DATA-CONSTR-RULE> <PHYS-CONSTRS> <LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWER-LIMIT> <UPPER-LIMIT INTERVAL-TYPE="CLOSED">7</UPPER-LIMIT> </PHYS-CONSTRS> </DATA-CONSTR-RULE> </DATA-CONSTR-RULES> </DATA-CONSTR> <DATA-CONSTR> <SHORT-NAME>DONEE2</SHORT-NAME> <DATA-CONSTR-RULES> <DATA-CONSTR-RULE> <PHYS-CONSTRS> <LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWER-LIMIT> <UPPER-LIMIT INTERVAL-TYPE="CLOSED">4</UPPER-LIMIT> </PHYS-CONSTRS> </DATA-CONSTR-RULE> </DATA-CONSTR-RULES> </DATA-CONSTR>
mais sa ne marche pas, voici une partie de code que j'ai fait:
j'arrive a extraire le nom, mais je veux extraire les 3 ensemble, et il ya plus de 500 d'autre parties dans le fichier xml, avec le même ordre.
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 import xml.dom.minidom as minidom #---------------------------------------------------------------------- def getTitles(xml): """ Définir toutes les entrées déclarer dans le fichier arxml """ global liste_in liste_in=[] doc = minidom.parse(xml) node = doc.documentElement ports = doc.getElementsByTagName("R-PORT-PROTOTYPE") titles = [] for port in ports: titleObj = port.getElementsByTagName("SHORT-NAME")[0] titles.append(titleObj) for title in titles: nodes = title.childNodes for node in nodes: if node.nodeType == node.TEXT_NODE: print node.data node.data = str(node.data) liste_in.append(node.data) print liste_in if __name__ == "__main__": document = ('C:/Users/ARE/Desktop/FIC.arxml') getTitles(document)
merci par avance
Partager