Análise de XML

https://farm3.staticflickr.com/2808/33888714601_a1f7d020a2_k_d.jpg

untangle

untangle é uma biblioteca simples que recebe um documento XML e retorna um objeto Python contendo os nós e atributos em sua estrutura.

Por exemplo, um arquivo XML como este:

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

pode ser carregado assim:

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

e então podemos obter o nome dos elementos filho assim:

obj.root.child['name']

O untangle também suporta o carregamento de XML desde uma String ou desde uma URL.

xmltodict

xmltodict é outra biblioteca simples que visa tornar o sentimento de trabalhar com XML como se fosse JSON.

Um arquivo XML como este:

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

pode ser carregado em um dicionário Python como este:

import xmltodict

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

e então podemos acessar os elementos, atributos e valores como estes:

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 também permite voltarmos para o formato XML com a função unparse, o mesmo também possui um modo de transmissão adequado para transmissão de arquivos que não se encaixam na memória e oferece suporta ao uso de namespaces.