Page 1 sur 1

[RESOLU] Parser XML sur BeautifulSoup

Posté : 16 oct. 2024 - 15:38
par jmorillo
Hello hello,

J'ai besoin de créer un package "Clari Copilot" (facile, leur intaller.exe fonctionnement correctement avec du /S).
En revanche, je bute sur la fonction update_package.py car l'hébergement de binaire est sur un cdn, sans page html principale mais j'ai pu trouver une page xml listant les releases.
Dans setupdevhelpers.py, il y a la fonction bs_find et bs_find_all (qui vient appeler BeautifulSoup (bs4)) avec par défaut features="html.parser"
BeautifulSoup ainsi que les fonctions bs_find* acceptent feature="xml" sauf que BeautifulSoup a besoin de la lib python "lxml" qui n'est pas présente par défaut dans l'env virtuelle python de Wapt il me semble.
Je pourrais faire un parser crado à base de bidouille mais bon, autant utiliser bs_find* et BeautifulSoup nativement avec du XML.
Auriez-vous une astuce pour moi ? est-il prévu d'intégrer cette lib lxml dans une prochaine release ? ou peut-être suis-je passé à coté de quelque chose ?...
Merci beaucoup d'avance
Bien cordialement
Jordi

Re: Parser XML sur BeautifulSoup

Posté : 16 oct. 2024 - 16:45
par blemoigne
Bonjour Jordi,
Tu peux quand même parser le xml avec le html parser (tu auras un warning). C'est le cas de ce paquet : https://wapt.tranquil.it/store/fr/tis-0install

Re: Parser XML sur BeautifulSoup

Posté : 16 oct. 2024 - 18:33
par jmorillo
Un grand merci Bertrand !
Tout fonctionne correctement !
Juste une petite galère car l'element xml était déclaré ainsi: "<Key>"

Je ne trouvais aucun résultat pour

Code : Tout sélectionner

bs_find_all('https://contoso.com/test.xml', 'Key')
Il fallait mettre Key -> key (en minuscule) dans

Code : Tout sélectionner

bs_find_all('https://contoso.com/test.xml', 'key')
pour qu'un résultat soit affiché.
En tout cas je vais pouvoir terminer la fonction update_package.
Encore un grand merci

Re: Parser XML sur BeautifulSoup

Posté : 17 oct. 2024 - 15:47
par dcardon
Salut Jordi,
merci pour ton retour :-)
je passe le topic en résolu.
Denis