آموزش استفاده و ایجاد فایل XML در پایتون

XML (eXtensible Markup Language) یک فرمت ساختارمند برای ذخیرهسازی و تبادل دادهها است. این فرمت به طور گسترده در برنامهنویسی وب، پیکربندی نرمافزارها و انتقال دادهها بین سیستمها استفاده میشود. XML شباهت زیادی به HTML دارد، اما برخلاف HTML، XML برای ذخیرهسازی دادهها طراحی شده است.
در این مقاله، ابتدا نحوه استفاده از فایلهای XML در پایتون را آموزش میدهیم، سپس به یک پروژه عملی میپردازیم که در آن از XML برای مدیریت دادهها استفاده میکنیم.
سرفصلها
- معرفی XML و کاربردهای آن
- خواندن و نوشتن فایل XML در پایتون
- پروژه کاربردی: مدیریت اطلاعات محصولات با XML
- شرح پروژه
- روش حل
- سورس کد
- توضیح توابع
1. معرفی XML و کاربردهای آن
XML چیست؟
XML یک زبان نشانهگذاری (Markup Language) است که برای ذخیرهسازی و انتقال دادهها استفاده میشود. این فرمت به صورت سلسلهمراتبی (Hierarchical) دادهها را سازماندهی میکند و هر داده در قالب یک عنصر (Element) با تگهای باز و بسته قرار میگیرد.
کاربردهای XML
- انتقال دادهها بین سیستمها در برنامههای وب
- ذخیرهسازی تنظیمات و پیکربندیهای نرمافزار
- مدیریت دادههای ساختارمند در پایگاه دادههای NoSQL
- تبادل دادهها در وبسرویسها (Web Services)
2. خواندن و نوشتن فایل XML در پایتون
پایتون از طریق ماژول xml.etree.ElementTree
امکان کار با فایلهای XML را فراهم میکند. این ماژول شامل توابعی برای تجزیه (Parse)، ایجاد و دستکاری فایلهای XML است.
خواندن فایل XML
برای خواندن دادهها از یک فایل XML، از تابع ()
ElementTree.parse
استفاده میکنیم.
مثال:
import xml.etree.ElementTree as ET
# خواندن فایل XML
tree = ET.parse('data.xml')
root = tree.getroot()
# نمایش تمام عناصر
for child in root:
print(child.tag, child.attrib)
نوشتن فایل XML
برای ایجاد و ذخیره دادهها در یک فایل XML، از تابع ()ElementTree.write
استفاده میکنیم.
مثال:
import xml.etree.ElementTree as ET
# ایجاد ریشه (Root)
root = ET.Element("Products")
# اضافه کردن یک عنصر
product = ET.SubElement(root, "Product", attrib={"id": "1"})
name = ET.SubElement(product, "Name")
name.text = "Laptop"
price = ET.SubElement(product, "Price")
price.text = "1000"
# ایجاد درخت XML
tree = ET.ElementTree(root)
# ذخیره در فایل XML
tree.write("products.xml", encoding="utf-8", xml_declaration=True)
توضیحات:
()ET.parse
: فایل XML را تجزیه کرده و یک شیء درختی (Tree) برمیگرداند.()getroot
: ریشه (Root) درخت XML را برمیگرداند.()ET.Element
: یک عنصر جدید ایجاد میکند.()ET.SubElement
: یک زیرعنصر (Child Element) به یک عنصر اضافه میکند.()write
: درخت XML را در یک فایل ذخیره میکند.
3. پروژه کاربردی: مدیریت اطلاعات محصولات با XML
شرح پروژه
هدف این پروژه، ایجاد یک سیستم ساده برای مدیریت اطلاعات محصولات یک فروشگاه است. این سیستم باید قادر به انجام عملیات زیر باشد:
- افزودن اطلاعات یک محصول (نام، قیمت، موجودی).
- نمایش اطلاعات تمام محصولات.
- ذخیرهسازی اطلاعات در یک فایل XML.
- بارگذاری اطلاعات از فایل XML.
روش حل
- از یک ساختار XML برای ذخیره اطلاعات محصولات استفاده میکنیم.
- اطلاعات هر محصول را به صورت یک عنصر XML ذخیره میکنیم.
- برای ذخیرهسازی و بارگذاری اطلاعات، از فایل XML استفاده میکنیم.
- از توابع جداگانه برای هر عملیات (افزودن، نمایش، ذخیره و بارگذاری) استفاده میکنیم.
سورس کد
import xml.etree.ElementTree as ET
import os
# تابع برای بارگذاری اطلاعات از فایل XML
def load_products():
if os.path.exists('products.xml'):
tree = ET.parse('products.xml')
root = tree.getroot()
return root
return ET.Element("Products")
# تابع برای ذخیره اطلاعات در فایل XML
def save_products(root):
tree = ET.ElementTree(root)
tree.write('products.xml', encoding="utf-8", xml_declaration=True)
# تابع برای افزودن محصول
def add_product(root):
name = input("Enter product's name: ")
price = input("Enter product's price: ")
stock = input("Enter product's stock: ")
product = ET.SubElement(root, "Product", attrib={"id": str(len(root) + 1)})
name_elem = ET.SubElement(product, "Name")
name_elem.text = name
price_elem = ET.SubElement(product, "Price")
price_elem.text = price
stock_elem = ET.SubElement(product, "Stock")
stock_elem.text = stock
print("Product added successfully!")
# تابع برای نمایش اطلاعات محصولات
def show_products(root):
if len(root) == 0:
print("No products found.")
return
for product in root:
print(f"ID: {product.attrib['id']}")
print(f"Name: {product.find('Name').text}")
print(f"Price: {product.find('Price').text}")
print(f"Stock: {product.find('Stock').text}")
print("-" * 20)
# تابع اصلی
def main():
root = load_products()
while True:
print("\nProduct Management System")
print("1. Add Product")
print("2. Show Products")
print("3. Save and Exit")
choice = input("Enter your choice: ")
if choice == '1':
add_product(root)
elif choice == '2':
show_products(root)
elif choice == '3':
save_products(root)
print("Data saved. Exiting...")
break
else:
print("Invalid choice. Please try again.")
if __name__ == "__main__":
main()
توضیح توابع
()load_products
- این تابع بررسی میکند که آیا فایل
products.xml
وجود دارد یا خیر. - اگر فایل وجود داشته باشد، دادههای آن را تجزیه کرده و ریشه (Root) درخت XML را برمیگرداند.
- اگر فایل وجود نداشته باشد، یک عنصر ریشه جدید (
<Products>
) ایجاد میکند.
- این تابع بررسی میکند که آیا فایل
save_products(root)
- این تابع درخت XML را به فایل
products.xml
ذخیره میکند.
- این تابع درخت XML را به فایل
add_product(root)
- این تابع اطلاعات یک محصول (نام، قیمت و موجودی) را از کاربر دریافت کرده و به عنوان یک عنصر جدید به درخت XML اضافه میکند.
show_products(root)
- این تابع اطلاعات تمام محصولات موجود در درخت XML را نمایش میدهد.
()main
- این تابع منوی اصلی برنامه را اجرا میکند و به کاربر اجازه میدهد عملیات مختلف را انجام دهد.
نتیجهگیری
در این مقاله، نحوه استفاده از فایلهای XML در پایتون را آموختیم و یک پروژه عملی برای مدیریت اطلاعات محصولات پیادهسازی کردیم. این پروژه نشان داد که چگونه میتوان از XML برای ذخیرهسازی و مدیریت دادهها استفاده کرد.
دیدگاهتان را بنویسید