Bonjour à tous,

J'ai un fichier xml construit de cette manière:


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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<File>
  <Version>48829212</Version>
  <SenderNr>50054512552</SenderNr>
  <SenderName>SenderName</SenderName>
  <ReceiverNr>0526206</ReceiverNr>
  <ReceiverName>ReceiverName</ReceiverName>
  <CreationDateTime>20150812</CreationDateTime>
  <StartDate>20151114</StartDate>
  <EndDate>20151120</EndDate>
  <Sales>
    <Sale>
      <Id>485654256</Id>
      <Name>Name</Name>
      <Firstname>Firstname</Firstname>
      <SalesID>01</SalesID>
      <Location1>Tae</Location1>
      <Location2>5515</Location2>
      <Birthdate>20150431</Birthdate>
      <NameSale>Jean</NameSale>
      <RegNr>2466822552004</RegNr>
      <Products>
        <Product>
          <ProductId>5865455</ProductId>
          <ProductIdHouse>05525452</ProductIdHouse>
          <Speciality>1</Speciality>
          <Description>Product</Description>
          <TabletUnidose>1</TabletUnidose>
          <Start>20120110</Start>
          <Administrations>
            <Administration>
              <Quantity>0.50</Quantity>
              <AdministrationDate>20151114</AdministrationDate>
              <AdministrationHour>0800</AdministrationHour>
            </Administration>
            <Administration>
              <Quantity>0.50</Quantity>
              <AdministrationDate>20151115</AdministrationDate>
              <AdministrationHour>0800</AdministrationHour>
            </Administration>
            <Administration>
              <Quantity>0.50</Quantity>
              <AdministrationDate>20151116</AdministrationDate>
              <AdministrationHour>0800</AdministrationHour>
            </Administration>
          </Administrations>
        </Product>
        <Product>
          <ProductId>78985</ProductId>
          <ProductIdHouse>588585</ProductIdHouse>
          <Speciality>1</Speciality>
          <Description>Product</Description>
          <TabletUnidose>1</TabletUnidose>
          <Start>20110513</Start>
          <Administrations>
            <Administration>
              <Quantity>1.00</Quantity>
              <AdministrationDate>20151114</AdministrationDate>
              <AdministrationHour>2000</AdministrationHour>
            </Administration>
            <Administration>
              <Quantity>1.00</Quantity>
              <AdministrationDate>20151115</AdministrationDate>
              <AdministrationHour>2000</AdministrationHour>
            </Administration>
          </Administrations>
        </Product>
      </Products>
    </Sale>
  </Sales>
</File>

J'arrive à récupérer les Sales,

grâce à ce code:

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
 
        doc = minidom.parse('sales.xml')
        root = doc.documentElement
        current = root.firstChild
        for element in root.getElementsByTagName('Sale') :
            sale= Sales.Sales(element.childNodes[1].childNodes[0].nodeValue,
                        element.childNodes[2].childNodes[0].nodeValue,
                        element.childNodes[3].childNodes[0].nodeValue,
                        element.childNodes[6].childNodes[0].nodeValue,
                        element.childNodes[7].childNodes[0].nodeValue,
                        element.childNodes[8].childNodes[0].nodeValue,None)
            try:
                sale.setId(element.childNodes[0].childNodes[0].nodeValue)
            except:
                print 'error pas d id'
Est ce qu'il y a possibilité d'optimiser ce code ?

Et ma deuxième question est comment je peux récupérer les éléments du Product, ainsi que les informations concernant les Administrations du Product ?

J'ai essayé cette méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
for elt in root.getElementsByTagName('Product') :
                print elt.childNodes[0].childNodes[0].nodeValue
Mais alors je ne sais pas quels produits est lié à quelles Sale.

D'avance Merci,