Python XML Parsing: Kompleksowy przewodnik
XML (Extensible Markup Language) jest popularnym językiem używanym do przechowywania i przesyłania danych. Python udostępnia kilka bibliotek do analizowania XML. W tym przewodniku przedstawimy dwie wbudowane biblioteki Pythona do parsowania XML: xml.dom.minidom i xml.etree.ElementTree.
Krok 1: Parsowanie XML przy użyciu xml.dom.minidom
Biblioteka xml.dom.minidom umożliwia analizowanie dokumentów XML w Pythonie. Aby przeanalizować ciąg XML, należy użyć metody 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)
W powyższym kodzie analizujemy ciąg XML i wyodrębniamy tytuł książki.
Krok 2: Parsowanie XML przy użyciu xml.etree.ElementTree
Biblioteka xml.etree.ElementTree (ET) zapewnia bardziej Pythoniczny sposób analizowania XML. Aby przeanalizować ciąg XML, należy użyć metody 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)
W powyższym kodzie analizujemy ciąg XML i wypisujemy tekst każdego elementu.
Krok 3: Analizowanie plików XML
Zarówno minidom, jak i ElementTree mogą analizować XML z plików przy użyciu metody 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)
Powyższy kod pokazuje, jak przeanalizować plik XML i wydrukować niektóre elementy.
Krok 4: Zapisywanie danych XML do pliku CSV
Po przeanalizowaniu XML można zapisać dane do pliku CSV przy użyciu biblioteki 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)
Krok 5: Obsługa nieprawidłowego XML
Biblioteka Beautiful Soup może analizować dokumenty XML, które mogą zawierać błędy:
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 radzi sobie z nieprawidłowym XML, ale jest wolniejsza niż inne biblioteki parsujące XML.
Komentarze (0)
Nie ma tu jeszcze żadnych komentarzy, możesz być pierwszy!