كيفية التعامل مع ملفات XML باستخدام مكتبة xml.etree.ElementTree في Python
تمت الكتابة بواسطة: adel
تارخ آخر تحديث: 21 نوفمبر 2024محتوى المقال
تعد ملفات XML (لغة التوصيف الموسعة) أحد التنسيقات الشائعة لتخزين ونقل البيانات. تتيح لك مكتبة xml.etree.ElementTree
في Python قراءة وتحرير وإنشاء ملفات XML بسهولة. في هذا المقال، سنتعرف على كيفية استخدام هذه المكتبة لمعالجة ملفات XML، بدءًا من قراءة الملفات وانتهاءً بإنشاء ملفات XML جديدة.
ما هي مكتبة xml.etree.ElementTree؟
xml.etree.ElementTree
هي مكتبة مضمنة في Python تُستخدم للتعامل مع ملفات XML. توفر هذه المكتبة واجهة بسيطة للعمل مع عناصر XML وتتيح لك تحليل (parsing) ملفات XML، البحث داخلها، تعديلها، وإنشاء ملفات جديدة.
قراءة ملفات XML
أول خطوة في التعامل مع ملفات XML هي قراءتها. يمكنك استخدام دالة parse()
لتحليل محتوى ملف XML وتحميله في ذاكرة Python كعنصر شجرة (ElementTree).
مثال على قراءة ملف XML
لنفترض أن لدينا ملف XML بسيط يسمى sample.xml
يحتوي على هيكل بيانات مثل التالي:
<data>
<item name="item1">
<price>19.99</price>
<quantity>3</quantity>
</item>
<item name="item2">
<price>5.99</price>
<quantity>10</quantity>
</item>
</data>
لتحليل هذا الملف في Python، يمكنك استخدام الكود التالي:
import xml.etree.ElementTree as ET
# قراءة الملف وتحليله
tree = ET.parse("sample.xml")
root = tree.getroot()
# عرض اسم الجذر
print("اسم الجذر:", root.tag)
في هذا المثال، نقوم بقراءة ملف sample.xml
باستخدام parse()
، ثم نستخدم getroot()
للحصول على الجذر (root) لشجرة XML. بعد ذلك، نعرض اسم الجذر باستخدام tag
.
التنقل في شجرة XML
بعد قراءة ملف XML، يمكنك التنقل داخل شجرة XML للوصول إلى العناصر الفرعية. يمكن القيام بذلك باستخدام التكرار على Element
أو البحث عن عناصر معينة باستخدام find()
وfindall()
.
الوصول إلى العناصر الفرعية
يمكنك التكرار على العناصر الفرعية لعناصر معينة كما يلي:
# التكرار على جميع العناصر الفرعية للجذر
for child in root:
print("العنصر:", child.tag, child.attrib)
سيعرض هذا الكود كل عنصر فرعي للجذر، مع اسم العنصر وخصائصه.
البحث عن عناصر معينة
إذا كنت تبحث عن عنصر معين بناءً على اسمه أو خصائصه، يمكنك استخدام find()
أو findall()
. لنفترض أنك تريد العثور على جميع العناصر المسماة "item":
# البحث عن جميع العناصر المسماة "item"
items = root.findall("item")
# عرض تفاصيل كل عنصر
for item in items:
print("العنصر:", item.attrib)
print("السعر:", item.find("price").text)
هذا الكود يبحث عن جميع العناصر المسماة "item" داخل الجذر، ويعرض خصائصها وقيمة العنصر الفرعي "price" لكل منها.
تحرير ملفات XML
بالإضافة إلى قراءة ملفات XML، يمكنك أيضًا تحرير العناصر الموجودة داخل ملف XML باستخدام مكتبة ElementTree
. يمكن تحرير النصوص، الخصائص، أو حتى إضافة أو حذف عناصر.
تحرير النصوص والخصائص
يمكنك تعديل النصوص والخصائص للعناصر باستخدام text
وattrib
:
# تغيير السعر للعنصر الأول
items[0].find("price").text = "29.99"
# تعديل خاصية "name" للعنصر الثاني
items[1].set("name", "item2_modified")
في هذا المثال، قمنا بتغيير السعر للعنصر الأول وتعديل خاصية "name" للعنصر الثاني.
إضافة وحذف عناصر
يمكنك إضافة عناصر جديدة أو حذف عناصر موجودة باستخدام Element
وremove()
.
# إنشاء عنصر جديد
new_item = ET.Element("item", attrib={"name": "item3"})
price = ET.SubElement(new_item, "price")
price.text = "9.99"
quantity = ET.SubElement(new_item, "quantity")
quantity.text = "2"
# إضافة العنصر الجديد إلى الجذر
root.append(new_item)
# حذف العنصر الثاني
root.remove(items[1])
هنا قمنا بإنشاء عنصر جديد يسمى "item3" وأضفناه إلى الجذر، كما قمنا بحذف العنصر الثاني من الشجرة.
حفظ التغييرات في ملف XML
بعد إجراء التعديلات على شجرة XML، يمكنك حفظ التغييرات في ملف جديد أو استبدال الملف الأصلي باستخدام دالة write()
.
# حفظ التغييرات في ملف جديد
tree.write("modified_sample.xml")
سيتم حفظ جميع التغييرات في ملف modified_sample.xml
.
إنشاء ملفات XML من الصفر
يمكنك أيضًا إنشاء ملفات XML جديدة بالكامل من الصفر باستخدام مكتبة ElementTree
. يتم ذلك عن طريق إنشاء عناصر جديدة باستخدام Element
ثم بناء شجرة XML وإضافة العناصر الفرعية لها.
مثال على إنشاء ملف XML
لنقم بإنشاء ملف XML بسيط يحتوي على بعض العناصر الأساسية:
# إنشاء عنصر الجذر
root = ET.Element("store")
# إنشاء عناصر فرعية
item1 = ET.SubElement(root, "item", attrib={"name": "item1"})
price1 = ET.SubElement(item1, "price")
price1.text = "19.99"
item2 = ET.SubElement(root, "item", attrib={"name": "item2"})
price2 = ET.SubElement(item2, "price")
price2.text = "29.99"
# إنشاء شجرة XML وحفظها في ملف
tree = ET.ElementTree(root)
tree.write("new_store.xml")
في هذا المثال، قمنا بإنشاء ملف XML جديد يسمى new_store.xml
يحتوي على عنصر الجذر "store" وعناصر فرعية "item" لكل منها.
الخاتمة
تعد مكتبة xml.etree.ElementTree
أداة قوية ومرنة للتعامل مع ملفات XML في Python. سواء كنت بحاجة إلى قراءة ملفات XML، تحريرها، أو حتى إنشاء ملفات جديدة من الصفر، توفر لك هذه المكتبة الأدوات اللازمة لإنجاز مهامك بكفاءة. نأمل أن يكون هذا المقال قد قدم لك فهماً شاملاً لكيفية استخدام ElementTree
لمعالجة ملفات XML.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- كيفية تنفيذ التوازي باستخدام مكتبة multiprocessing في Python
- كيفية كتابة سكربت للتعامل مع API RESTful باستخدام مكتبة requests في Python
- كيفية استخدام مكتبة subprocess لتنفيذ أوامر النظام في Python
- كيفية استخدام مكتبة PyGame لتطوير الألعاب في Python
- كتابة سكربت لتحميل الملفات من الإنترنت باستخدام urllib في Python
- كيفية إنشاء قنوات اتصال باستخدام مكتبة asyncio.Queue في Python
- كيفية استخدام مكتبة boto3 للتفاعل مع خدمات AWS في Python
- كيفية إدارة وتحليل البيانات باستخدام مكتبة Dask في Python
- كيفية التعامل مع ملفات الصوت باستخدام مكتبة pydub في Python
- كيفية إنشاء خريطة موقع Sitemap XML