Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Dominando Parsing XML em Python: Guia Prático com Minidom e ElementTree

O que é XML?

XML, ou eXtensible Markup Language, foi criado para armazenar e transportar dados estruturados eficientemente. É amplamente usado para troca de informações entre sistemas e aplicações.

Python fornece bibliotecas robustas para parsear e manipular documentos XML. No entanto, para parsear um arquivo XML, o documento inteiro deve primeiro ser carregado na memória. Neste tutorial demonstraremos como usar os módulos xml.dom.minidom e xml.etree.ElementTree do Python para ler, inspecionar e modificar arquivos XML.

Ao final deste guia você será capaz de:

Parseando XML com minidom

Começaremos com um arquivo XML de exemplo contendo dados de funcionários. O arquivo parece assim:

Passo 1) O arquivo lista primeiro nome, último nome, casa e áreas de especialização como SQL, Python, Testing e Business.

Dominando Parsing XML em Python: Guia Prático com Minidom e ElementTree

Passo 2) Após carregar o documento, imprimiremos o nodeName do elemento raiz e o tagName de seu primeiro filho. Estas são propriedades padrão de um objeto DOM.

Dominando Parsing XML em Python: Guia Prático com Minidom e ElementTree

Nota: Os valores nodeName e tagName seguem convenções de nomenclatura DOM XML, que podem ser desconhecidas se você é novo em XML.

Passo 3) Podemos extrair uma lista de todas as habilidades do documento. O código a seguir demonstra como reunir os nomes das habilidades em um set.

Dominando Parsing XML em Python: Guia Prático com Minidom e ElementTree

Criando um Novo Nó XML

Adicionar novos dados a uma estrutura XML existente é simples com minidom. Em nosso exemplo, adicionaremos um novo nó expertise rotulado "BigData".

  1. Crie o novo elemento com createElement("expertise") e defina seu atributo name.
  2. Anexe o novo elemento ao filho raiz do documento.

Dominando Parsing XML em Python: Guia Prático com Minidom e ElementTree

Exemplo de XML Parser

Exemplo Python 2

import xml.dom.minidom
def main():
    # Load and parse the XML file
    doc = xml.dom.minidom.parse("Myxml.xml")
    # Output root information
    print doc.nodeName
    print doc.firstChild.tagName
    # List existing expertise entries
    expertise = doc.getElementsByTagName("expertise")
    print "%d expertise:" % expertise.length
    for skill in expertise:
        print skill.getAttribute("name")
    # Add a new expertise entry
    newexpertise = doc.createElement("expertise")
    newexpertise.setAttribute("name", "BigData")
    doc.firstChild.appendChild(newexpertise)
    print " "
    # Verify addition
    expertise = doc.getElementsByTagName("expertise")
    print "%d expertise:" % expertise.length
    for skill in expertise:
        print skill.getAttribute("name")
if __name__ == "__main__":
    main()

Exemplo Python 3

import xml.dom.minidom
def main():
    # Load and parse the XML file
    doc = xml.dom.minidom.parse("Myxml.xml")
    # Output root information
    print(doc.nodeName)
    print(doc.firstChild.tagName)
    # List existing expertise entries
    expertise = doc.getElementsByTagName("expertise")
    print("%d expertise:" % expertise.length)
    for skill in expertise:
        print(skill.getAttribute("name"))
    # Add a new expertise entry
    newexpertise = doc.createElement("expertise")
    newexpertise.setAttribute("name", "BigData")
    doc.firstChild.appendChild(newexpertise)
    print(" ")
    # Verify addition
    expertise = doc.getElementsByTagName("expertise")
    print("%d expertise:" % expertise.length)
    for skill in expertise:
        print(skill.getAttribute("name"))
if __name__ == "__main__":
    main()

Parseando XML com ElementTree

ElementTree é uma API leve que torna manipulação XML simples e Pythonica. É ideal para ler arquivos XML grandes sem o overhead de um DOM completo.

Nossos dados XML de exemplo:

<data>
  <items>
    <item name="expertise1">SQL</item>
    <item name="expertise2">Python</item>
  </items>
</data>

Lendo XML com ElementTree:

Primeiro, importe o módulo:

import xml.etree.ElementTree as ET

Parseie o arquivo e obtenha o elemento raiz:

tree = ET.parse('items.xml')
root = tree.getroot()

Aqui está o código completo para exibir todos os nomes de habilidades:

import xml.etree.ElementTree as ET
tree = ET.parse('items.xml')
root = tree.getroot()
print('Expertise Data:')
for elem in root:
    for subelem in elem:
        print(subelem.text)

Saída:

Expertise Data:
SQL
Python

Resumo

Os módulos xml.dom.minidom e xml.etree.ElementTree do Python capacitam desenvolvedores a carregar, analisar e modificar documentos XML eficientemente. Enquanto minidom fornece representação DOM completa adequada para manipulações complexas, ElementTree oferece alternativa leve para parsing e extração diretas.


python

  1. Python File I/O: Dominando Operações de Arquivo, Leitura, Escrita e Gerenciamento
  2. Lendo Arquivos em Java com BufferedReader – Guia Prático com Exemplos
  3. Dominando o Método strip() do Python: Guia Completo e Exemplos Práticos
  4. Python len(): Guia Prático para Medir Comprimento de Objetos
  5. Dominando o yield do Python: Generator vs Return – Guia Prático
  6. Counter do Python em collections: Contagem Eficiente, Atualização e Operações Aritméticas
  7. Dominando enumerate() do Python: Loop com Índices para Listas, Tuplas, Strings e Dicionários
  8. Verificando Existência de Arquivos e Diretórios em Python – Guia Prático
  9. Python JSON: Codificação, Decodificação e Manipulação de Arquivos – Guia Prático
  10. Python List index(): Como Encontrar Posições de Elementos com Exemplos Práticos