Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/08/2021, à 14:41

kboo

xpath et xml.etree.ElementTree

Bonjour,
je galère avec un xpath et xml.etree.ElementTree, voici un exemple de xml:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <AAAA xmlns="http://qd/azz/ccc">
         <BBB xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <CCC>
               <DDD>
                  <EEE>123456</EEE>
                  <FFF>23/06/2021 16:00:00</FFF>
                  <GGG>23/06/2021 17:00:00</GGG>
                  <HHH i:nil="true"/>
                  <III i:nil="true"/>
               </DDD>
               <DDD>
                  <EEE>123457</EEE>
                  <FFF>05/07/2021 10:00:00</FFF>
                  <GGG>05/07/2021 11:00:00</GGG>
                  <HHH i:nil="true"/>
                  <III i:nil="true"/>
               </DDD>
               <DDD>
                  <EEE>123458</EEE>
                  <FFF>19/07/2021 15:00:00</FFF>
                  <GGG>19/07/2021 16:00:00</GGG>
                  <HHH i:nil="true"/>
                  <III i:nil="true"/>
               </DDD>
            </CCC>
            <CodeRetour>1</CodeRetour>
            <Message>blablabla</Message>
         </BBB>
      </AAAA>
   </s:Body>
</s:Envelope>

et j'essaye d'avoir tous les EEE sous forme de liste.. help !!!

merci d'avance

Dernière modification par kboo (Le 26/08/2021, à 14:54)

Hors ligne

#2 Le 27/08/2021, à 00:15

Vobul

Re : xpath et xml.etree.ElementTree

un truc comme ça ?

import xml.etree.ElementTree as ET
tree = ET.parse('a.xml')
root = tree.getroot()
mylist = []
for neighbor in root.iter('*'):
    if neighbor.tag.endswith('EEE'):
        mylist.append(neighbor.text)
print(mylist)

Ça donne comme résultat :

['123456', '123457', '123458']

À noter que c'est la toute première fois que j'utilise ce module et que je ne manipule quasiment jamais du XML wink


Vobul

Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.

Hors ligne

#3 Le 27/08/2021, à 01:36

Lolorase

Re : xpath et xml.etree.ElementTree

Hello,

Personnellement pour ce genre de chose, je trouve xml.dom.minidom plus efficace :

from xml.dom import minidom
doc = minidom.parse('test.xml')
root = doc.documentElement
list_de_eee = []
for element in root.getElementsByTagName('EEE') :
    list_de_eee.append(element.firstChild.nodeValue)

Dernière modification par Lolorase (Le 27/08/2021, à 01:51)

Hors ligne

#4 Le 27/08/2021, à 04:05

Vobul

Re : xpath et xml.etree.ElementTree

en plus c'est mignon "minidom" smile


Vobul

Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.

Hors ligne