Файлы XML в Python позволяют манипулировать и анализировать данные XML. XML (Расширяемый язык разметки) широко используется в качестве формата обмена данными.
Открыть Файл XML и Прочитать Данные с Помощью Python
Чтобы прочитать данные из файла XML с помощью Python, можно использовать встроенный модуль парсера XML. В этой части мы научимся анализировать данные XML в Python, изучая популярные библиотеки Python.
Наиболее часто используемые библиотеки для анализа файлов XML - это lxml и ElementTree
.
Использование Библиотеки Lxml
Библиотека lxml
является популярным средством чтения файлов XML, она достаточно эффективна для анализа данных XML. Установить библиотеку lxml
можно с помощью команды pip
.
from lxml import etree
root = etree.parse('file.xml')
for elem in root.iter():
print(elem.tag, elem.text)
Использование Elementtree
ElementTree - это встроенная библиотека, которая позволяет анализировать XML-файлы. В ElementTree входят встроенные модули, позволяющие анализировать и создавать элементы. Чтобы использовать библиотеку ElementTree, вам нужно её import
.
Вот пример того, как вы можете анализировать XML-файл, используя ElementTree
:
import xml.etree.ElementTree as ET
tree = ET.parse('file.xml')
root = tree.getroot()
for elem in root:
print(elem.tag, elem.text)
Используя любой из этих методов, вы можете эффективно читать XML файлы.
Как Написать XML
Чтобы написать XML на Python, вы можете использовать библиотеку XML API ElementTree. Вот два примера кода, которые демонстрируют, как создать и записать XML:
Пример 1: Создание и Запись XML на Python
import xml.etree.cElementTree as ET
### Create XML element tree
root = ET.Element("Person")
name = ET.SubElement(root, "Name")
name.text = "John"
age = ET.SubElement(root, "Age")
age.text = "30"
### Write XML element tree to file
tree = ET.ElementTree(root)
tree.write("person.xml")
Пример 2: Создание и Запись XML с Атрибутами
import xml.etree.cElementTree as ET
### Create XML element tree with attributes
root = ET.Element("Person", {"id": "123"})
name = ET.SubElement(root, "Name")
name.text = "Jane"
age = ET.SubElement(root, "Age")
age.text = "25"
### Write XML element tree to file with custom formatting
tree = ET.ElementTree(root)
tree.write("person.xml", encoding="utf-8", xml_declaration=True)
В обоих примерах используется класс ElementTree()
для создания XML-элемента tree
. Затем метод write()
используется для записи элемента tree
в XML-файл. Указав encoding
и xml_declaration во втором примере, создается пользовательский форматированный XML-файл с объявлением XML в верхней части.
Как конвертировать XML в JSON
Конвертация XML в JSON - это распространенная задача, которую можно легко выполнить.
Модуль xmltodict позволяет нам конвертировать XML-документ в словарь, который затем может быть легко преобразован в JSON с использованием встроенного модуля json
. Ниже приведен пример кода, демонстрирующий, как использовать этот подход:
import xmltodict
import json
# Load XML file
with open('data.xml') as xml_file:
xml_data = xml_file.read()
# Convert XML to Python dictionary
dict_data = xmltodict.parse(xml_data)
# Convert dictionary to JSON
json_data = json.dumps(dict_data)
# Output JSON data
print(json_data)
Модуль xml.etree.ElementTree
позволяет нам разобрать XML-документ и создать объект Element, который можно пройти, чтобы получить необходимые данные. Как только у нас есть данные в виде словаря, мы можем использовать модуль json
для их преобразования в JSON. Вот пример кода, демонстрирующий, как использовать этот подход:
import xml.etree.ElementTree as ET
import json
# Load XML file
tree = ET.parse('data.xml')
root = tree.getroot()
# Traverse the Element object to get required data
xml_dict = {}
for child in root:
xml_dict[child.tag] = child.text
# Convert dictionary to JSON
json_data = json.dumps(xml_dict)
# Output JSON data
print(json_data)
Как Конвертировать XML в CSV
Чтобы конвертировать XML в CSV, вы можете использовать модуль xml.etree.ElementTree
и модуль csv. Вот два примера кода, чтобы помочь вам начать:
Пример 1: Использование Модулей Elementtree и CSV
import csv
import xml.etree.ElementTree as ET
### Open the XML file
tree = ET.parse('example.xml')
root = tree.getroot()
### Open the CSV file
csv_file = open('example.csv', 'w')
csvwriter = csv.writer(csv_file)
### Write the column headers
header = []
for child in root[0]:
header.append(child.tag)
csvwriter.writerow(header)
### Write the data rows
for item in root.findall('.//item'):
row = []
for child in item:
row.append(child.text)
csvwriter.writerow(row)
### Close the CSV file
csv_file.close()
Пример 2: Использование pandas
import pandas as pd
import xml.etree.ElementTree as ET
### Load the XML file into a dataframe
tree = ET.parse('example.xml')
root = tree.getroot()
dfcols = ['name', 'email', 'phone']
df = pd.DataFrame(columns=dfcols)
for node in root:
name = node.find('name').text
email = node.find('email').text
phone = node.find('phone').text
df = df.append(
pd.Series([name, email, phone], index=dfcols),
ignore_index=True)
### Save the dataframe to a CSV file
df.to_csv('example.csv', index=False)
В обоих этих примерах модуль xml.etree.ElementTree
используется для разбора XML-файла и извлечения данных. Модуль csv
(в Примере 1) или библиотека pandas (в Примере 2) используются для записи данных в файл CSV.
Пишите вместе с нами!
Вы можете внести свой вклад в статьи о Python на GitHub: создайте Fork, внесите правки и отправьте нам Pull request.