Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Мастерство парсинга XML в Python: практическое руководство с Minidom и ElementTree

Что такое XML?

XML (eXtensible Markup Language) создан для эффективного хранения и транспорта структурированных данных. Широко используется для обмена информацией между системами и приложениями.

Python предоставляет надёжные библиотеки для парсинга и манипуляции XML-документами. Однако для парсинга XML-файла весь документ сначала должен быть загружен в память. В этом туториале мы продемонстрируем, как использовать модули xml.dom.minidom и xml.etree.ElementTree для чтения, инспекции и модификации XML-файлов.

К концу руководства вы сможете:

Парсинг XML с minidom

Начнём с примера XML-файла с данными сотрудников. Файл выглядит так:

Шаг 1) Файл перечисляет имя, фамилию, дом и области экспертизы сотрудника: SQL, Python, Testing, Business.

Мастерство парсинга XML в Python: практическое руководство с Minidom и ElementTree

Шаг 2) После загрузки документа мы распечатаем nodeName корневого элемента и tagName его первого ребёнка. Это стандартные свойства DOM-объекта.

Мастерство парсинга XML в Python: практическое руководство с Minidom и ElementTree

Примечание: Значения nodeName и tagName следуют соглашениям именования XML DOM, которые могут быть незнакомы новичкам в XML.

Шаг 3) Мы можем извлечь список всех навыков из документа. Следующий код демонстрирует сбор имён навыков в множество.

Мастерство парсинга XML в Python: практическое руководство с Minidom и ElementTree

Создание нового XML-узла

Добавление новых данных в существующую XML-структуру просто с minidom. В примере добавим новый узел expertise с меткой «BigData».

  1. Создайте новый элемент с createElement("expertise") и установите атрибут name.
  2. Присоедините новый элемент к первому ребёнку документа.

Мастерство парсинга XML в Python: практическое руководство с Minidom и ElementTree

Пример XML Parser

Пример для Python 2

import xml.dom.minidom
def main():
    # Загрузить и распарсить XML-файл
    doc = xml.dom.minidom.parse("Myxml.xml")
    # Вывести информацию о корне
    print doc.nodeName
    print doc.firstChild.tagName
    # Список существующих записей expertise
    expertise = doc.getElementsByTagName("expertise")
    print "%d expertise:" % expertise.length
    for skill in expertise:
        print skill.getAttribute("name")
    # Добавить новую запись expertise
    newexpertise = doc.createElement("expertise")
    newexpertise.setAttribute("name", "BigData")
    doc.firstChild.appendChild(newexpertise)
    print " "
    # Проверить добавление
    expertise = doc.getElementsByTagName("expertise")
    print "%d expertise:" % expertise.length
    for skill in expertise:
        print skill.getAttribute("name")
if __name__ == "__main__":
    main()

Пример для Python 3

import xml.dom.minidom
def main():
    # Загрузить и распарсить XML-файл
    doc = xml.dom.minidom.parse("Myxml.xml")
    # Вывести информацию о корне
    print(doc.nodeName)
    print(doc.firstChild.tagName)
    # Список существующих записей expertise
    expertise = doc.getElementsByTagName("expertise")
    print("%d expertise:" % expertise.length)
    for skill in expertise:
        print(skill.getAttribute("name"))
    # Добавить новую запись expertise
    newexpertise = doc.createElement("expertise")
    newexpertise.setAttribute("name", "BigData")
    doc.firstChild.appendChild(newexpertise)
    print(" ")
    # Проверить добавление
    expertise = doc.getElementsByTagName("expertise")
    print("%d expertise:" % expertise.length)
    for skill in expertise:
        print(skill.getAttribute("name"))
if __name__ == "__main__":
    main()

Парсинг XML с ElementTree

ElementTree — лёгкий API, делающий манипуляции с XML простыми и питоничными. Идеален для чтения больших XML-файлов без накладных расходов полного DOM.

Наш пример XML-данных:

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

Чтение XML с ElementTree:

Сначала импортируйте модуль:

import xml.etree.ElementTree as ET

Распарсьте файл и получите корневой элемент:

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

Полный код для отображения всех имён навыков:

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)

Вывод:

Expertise Data:
SQL
Python

Резюме

Модули Python xml.dom.minidom и xml.etree.ElementTree позволяют разработчикам эффективно загружать, анализировать и модифицировать XML-документы. Пока minidom предоставляет полное DOM-представление, подходящее для сложных манипуляций, ElementTree предлагает лёгкую альтернативу для прямого парсинга и извлечения.


Python

  1. Работа с файлами в Python: открытие, чтение, запись и управление
  2. Чтение файлов в Java с BufferedReader — Практическое руководство с примерами
  3. Мастерство метода strip() в Python: подробное руководство и практические примеры
  4. Python len(): практическое руководство по измерению длины объектов
  5. Освоение yield в Python: генератор против return — практическое руководство
  6. Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
  7. Освоение enumerate() в Python: циклы с индексами для списков, кортежей, строк и словарей
  8. Проверка существования файлов и директорий в Python — практическое руководство
  9. Python JSON: кодирование, декодирование и работа с файлами — практическое руководство
  10. Python list.index(): как находить позиции элементов — практические примеры