Python XML Parsing: Исчерпывающее руководство
XML (Extensible Markup Language) - это популярный язык, используемый для хранения и передачи данных. Python предоставляет несколько библиотек для разбора XML. В этом руководстве мы познакомим вас с двумя встроенными библиотеками Python для разбора XML: xml.dom.minidom и xml.etree.ElementTree.
Шаг 1: Разбор XML с помощью xml.dom.minidom
Библиотека xml.dom.minidom позволяет разбирать документы XML с помощью Python. Чтобы разобрать строку XML, используйте метод parseString:
from xml.dom.minidom import parseString
xml_string = """
<library>
<book>
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<year>1925</year>
</book>
</library>
"""
document = parseString(xml_string)
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)
В приведенном выше коде мы разбираем строку XML и извлекаем название книги.
Шаг 2: Разбор XML с помощью xml.etree.ElementTree
Библиотека xml.etree.ElementTree (ET) предоставляет более питонический способ разбора XML. Чтобы разобрать строку XML, используйте метод fromstring:
import xml.etree.ElementTree as ET
xml_string = """
<library>
<book>
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<year>1925</year>
</book>
</library>
"""
root = ET.fromstring(xml_string)
for child in root.iter():
if child.text.strip():
print(child.text)
В приведенном выше коде мы разбираем строку XML и выводим текст каждого элемента.
Шаг 3: Разбор XML-файлов
И minidom, и ElementTree могут анализировать XML из файлов, используя метод parse:
# Using minidom
from xml.dom.minidom import parse
document = parse("sample.xml")
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)
# Using ElementTree
import xml.etree.ElementTree as ET
root = ET.parse("sample.xml")
for child in root.iter():
if child.text.strip():
print(child.text)
Приведенный выше код демонстрирует, как разобрать XML-файл и вывести некоторые элементы.
Шаг 4: Сохранение данных XML в файл CSV
После разбора XML вы можете сохранить данные в CSV-файл с помощью библиотеки pandas:
import pandas as pd
parsed_dict = {
"title": ["The Great Gatsby"],
"author": ["F. Scott Fitzgerald"],
"year": [1925]
}
df = pd.DataFrame(parsed_dict)
df.to_csv("parsed_xml_data.csv", index=False)
Шаг 5: Обработка недопустимого XML
Библиотека Beautiful Soup может разбирать XML-документы, которые могут содержать ошибки:
from bs4 import BeautifulSoup
invalid_xml = """
<root>
<person>
<name>John Doe</name>
<message>This is a message & an invalid XML example.</message>
</person>
</root>
"""
soup = BeautifulSoup(invalid_xml, features="lxml-xml")
print(soup.prettify())
Beautiful Soup может обрабатывать недействительный XML, но он медленнее других библиотек для разбора XML.
Комментарии (0)
Здесь пока нет комментариев, вы можете быть первым!