Python XML Ayrıştırma: Kapsamlı Bir Kılavuz
XML (Genişletilebilir İşaretleme Dili) veri depolamak ve aktarmak için kullanılan popüler bir dildir. Python, XML'i ayrıştırmak için çeşitli kütüphaneler sağlar. Bu kılavuzda, XML'i ayrıştırmak için iki yerleşik Python kütüphanesini tanıtacağız: xml.dom.minidom ve xml.etree.ElementTree.
Adım 1: xml.dom.minidom Kullanarak XML Ayrıştırma
xml.dom.minidom kütüphanesi, XML belgelerini Python ile ayrıştırmanıza olanak tanır. Bir XML dizesini ayrıştırmak için parseString yöntemini kullanın:
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)
Yukarıdaki kodda, XML dizesini ayrıştırır ve kitap başlığını çıkarırız.
Adım 2: xml.etree.ElementTree Kullanarak XML Ayrıştırma
xml.etree.ElementTree (ET) kütüphanesi XML'i ayrıştırmak için daha Pythonic bir yol sağlar. Bir XML dizesini ayrıştırmak için fromstring yöntemini kullanın:
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)
Yukarıdaki kodda, XML dizesini ayrıştırır ve her bir öğenin metnini yazdırırız.
Adım 3: XML Dosyalarını Ayrıştırma
Hem minidom hem de ElementTree, parse yöntemini kullanarak dosyalardan XML ayrıştırabilir:
# 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)
Yukarıdaki kod, bir XML dosyasının nasıl ayrıştırılacağını ve bazı öğelerin nasıl yazdırılacağını göstermektedir.
Adım 4: XML Verilerini CSV Dosyasına Kaydetme
XML'i ayrıştırdıktan sonra pandas kütüphanesini kullanarak verileri bir CSV dosyasına kaydedebilirsiniz:
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)
Adım 5: Geçersiz XML'in İşlenmesi
Beautiful Soup kütüphanesi, hata içerebilecek XML belgelerini ayrıştırabilir:
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 geçersiz XML ile başa çıkabilir, ancak diğer XML ayrıştırma kütüphanelerinden daha yavaştır.
Yorumlar (0)
Burada henüz yorum yok, ilk siz olabilirsiniz!