Parsage XML

untangle

untangle est une bibliothèque simple qui prend un document XML et retourne un objet Python qui reflète les nœuds et les attributs dans sa structure.

Par exemple, un fichier XML comme ceci:

<?xml version="1.0"?>
<root>
    <child name="child1">
</root>

peut être chargé comme ceci:

import untangle
obj = untangle.parse('path/to/file.xml')

et ensuite vous pouvez obtenir le nom des éléments fils comme ceci:

obj.root.child['name']

untangle supporte aussi le chargement de XML depuis une chaîne de caractères ou une URL.

xmltodict

xmltodict est une autre bibliothèque simple qui vise à faire que le XML donne l’impression de travailler avec JSON

Un fichier XML comme ceci:

<mydocument has="an attribute">
  <and>
    <many>elements</many>
    <many>more elements</many>
  </and>
  <plus a="complex">
    element as well
  </plus>
</mydocument>

peut être chargé dans un dictionnaire Python comme ceci:

import xmltodict

with open('path/to/file.xml') as fd:
    doc = xmltodict.parse(fd.read())

et ensuite, vous pouvez accéder aux éléments, attributs et valeurs comme ceci:

doc['mydocument']['@has'] # == u'an attribute'
doc['mydocument']['and']['many'] # == [u'elements', u'more elements']
doc['mydocument']['plus']['@a'] # == u'complex'
doc['mydocument']['plus']['#text'] # == u'element as well'

xmltodict vous permet aussi des aller-retours au XML avec la fonction unparse, dispose d’un mode streaming adapté à la manipulation des fichiers qui ne rentrent pas en mémoire et supporte les espaces de noms.