Python XML ElementTree

Python XML ElementTree
Podemos gerar, alterar e analisar documentos XML usando o útil elemento da biblioteca Python. Pensa -se que uma árvore represente o documento inteiro. Nesta árvore, o elemento significa um único nó ou ramo. No XML, ler ou escrever para ou a partir de arquivos é feito principalmente no nível do ElementTree, enquanto interage com os elementos é baseado no nível do elemento. O módulo Python ElementTree será usado para editar e adicionar dados aos arquivos XML enquanto aprendemos a analisar XML com Python neste tutorial. Estudaremos também expressões e árvores XML para compreender os dados.

A estrutura XML utiliza -se para compreender dados dinamicamente. Ele está amplamente preocupado em criar páginas da web com dados que seguem um formato predeterminado. XML, também conhecido como um documento XML, é usado para gerar uma página. Uma estrutura simples e hierárquica semelhante a uma árvore é produzida usando XML. O principal objetivo deste post é mostrar como ler e entender os arquivos usando Python.

Os dados da amostra desta parte serão retirados do documento XML a seguir:

Pelo que você leu no arquivo XML, você pode ver que o elemento raiz é chamado de "cliente", que contém todos os outros elementos, como "clientes", que são considerados "elementos filhos" ou "subelementos."Deve-se notar que esses componentes infantis têm a capacidade de pais de outros elementos filhos, que são conhecidos como" elementos de sub-filho "e agem como seus próprios pais.

Você observará, por exemplo, que o elemento do cliente contém alguns "atributos", como IDs, nomes e contas, que fornecem ainda mais detalhes. Agora, vamos ler essas informações de arquivo XML usando os diferentes códigos fornecidos abaixo.

Exemplo 1:
Podemos obter o nome da etiqueta raiz do arquivo XML especificado em Python, utilizando a função getRoot do módulo ElementTree.

importar xml.Etree.ElementTree como et
file_root = et.Parse ('cliente.xml ').getroot ()
file_tag = file_root.marcação
imprimir (file_tag)

Incluímos o módulo ElementTree, que é atribuído um alias como ET. Então, declaramos um objeto como file_root. Dentro desse objeto, temos uma função de análise que pega o nome do arquivo XML. Ao mesmo tempo, chamamos o método getroot para obter o nome da raiz. Criamos outro objeto como file_tag, onde chamamos a tag com o objeto file_root. O resultado file_tag será impresso na tela.

Você pode ver o nome da etiqueta raiz gerada é os clientes, conforme fornecido no arquivo XML.

Exemplo 2:
Também podemos obter a raiz dos atributos que existiam no arquivo XML. Com este exemplo, podemos realizar a raiz do atributo.

importar xml.Etree.ElementTree como et
f_root = et.Parse ('cliente.xml ').getroot ()
f_attributes = f_root.attr
Imprimir (f_attributes)
dia = f_attributes.Get ('dia')
Imprimir ('dia:', dia)

Como inserimos o módulo Module ElementTree, criamos um objeto como F_ROOT, onde definimos o arquivo XML dentro do método Parse. Também definimos o método getroot dentro desse objeto para obter o nome da raiz. Em seguida, criamos um objeto como f_attributes para a raiz do atributo e imprimimos seu valor. Para obter o atributo em particular, definimos um objeto como um dia e atribuímos o atributo ao método get dentro dele. O atributo específico será impresso pela função de impressão.

Os resultados do código acima são os seguintes:

Exemplo 3:
Podemos acessar os atributos dos nós filhos da raiz implementando o seguinte código.

importar xml.Etree.ElementTree como et
raiz = et.Parse ('cliente.xml ').getroot ()
Para o cliente em raiz.Findall ('Cliente'):
atributos = cliente.attr
Imprimir (atributos)
type = atributos.Get ('Type')

As primeiras duas etapas do código são as mesmas que o código acima especificado. Em seguida, temos um loop para recapitula sobre cada nó infantil 'cliente'. Após essa iteração, criamos um atributo variável que recebe todos os nós dos atributos. Nós buscamos o tipo de atributos atribuindo 'tipo' dentro do método get.

Os tipos de atributos nos nós filhos são exibidos da seguinte forma:

Exemplo 4:
O exemplo é acessar o nó do elemento a partir do arquivo XML sem saber o nome da tag contra o elemento do nó correspondente.

importar xml.Etree.ElementTree como et
raiz = et.Parse ('cliente.xml ').getroot ()
Para o cliente em raiz.Findall ('Cliente'):
id = cliente.encontre ('id').texto
Print ('id:', id)
nome = cliente.encontre ('nome').texto
Print ('nome:', nome)
Bill = Cliente.encontre ('Bill').texto
Imprimir ('Bill:', Bill)

Comece com o loop for, iterado o loop for sobre cada nó no arquivo xml. Em seguida, obtemos o ID do elemento, nome e conta, passando -os para o método de localização e imprimindo cada elemento com seu valor.

Os nós do elemento obtidos do código acima são os seguintes:

Exemplo 5:
Vamos ver o último exemplo em que estamos acessando o nome da tag root do arquivo XML do cliente.

importar xml.Etree.ElementTree como et
raiz = et.Parse ('cliente.xml ').getroot ()
Para o cliente em raiz.Findall ('Cliente'):
Para itens no cliente:
i_name = itens.marcação
i_value = cliente.Encontre (itens.marcação).texto
imprimir (i_name, ':', i_value)

Do loop for primeiro, iteramos sobre cada um dos nós. Então, novamente usamos o loop for para obter todos os itens do nó do cliente. Os itens são acessados ​​chamando o objeto de tag e passando -o para o método de localização.

Toda a etiqueta do item da etiqueta do cliente é exibida da seguinte forma:

Conclusão

Um pacote Python essencial chamado ElementTree torna possível atravessar e ler documentos XML. O documento XML é dividido em uma estrutura de árvore gerenciável usando elementtree. Em caso de dúvida, imprima -o usando o prêmio de impressão prático (ET.ToString (root, coding = "utf8").Decode ('UTF8')) para examinar todo o documento XML de uma só vez. Ao modificar, adicionar ou eliminar de um XML, a verificação é útil. O uso de ElementTree e XMLs tem várias considerações importantes. Tags definem quais valores devem ser descritos na estrutura da árvore e ajudam a construí -la. A capacidade de ler e escrever para um XML pode ser facilitada por estruturação inteligente. O relacionamento entre pais e filhos deve sempre ser mostrado nos suportes de abertura e fechamento em tags. Ao validar tags ou permitir designações booleanas, os atributos fornecem mais instruções.