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>
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>
mais sa ne marche pas, voici une partie de code que j'ai fait:
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)
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.
merci par avance