1. المقدمة
بايثون هي لغة برمجة مرنة يمكنها التعامل بسهولة مع تنسيقات بيانات متنوعة. من بينها، XML (لغة الترميز القابلة للتوسعة) تستخدم بشكل شائع لتبادل وتخزين البيانات المنظمة، وتُستخدم على نطاق واسع في استجابات API وملفات التكوين. في بايثون، يمكنك العمل بسهولة مع XML باستخدام المكتبة القياسية أو المكتبات الخارجية. يشرح هذا المقال بوضوح كل شيء من العمليات الأساسية إلى المتقدمة لـ XML باستخدام بايثون.
2. مقدمة عن مكتبات بايثون للتعامل مع XML
2.1 المكتبة القياسية: xml.etree.ElementTree
مكتبة بايثون القياسية xml.etree.ElementTree هي أداة مريحة تجعل من السهل قراءة وكتابة ملفات XML، بالإضافة إلى استكشاف وتحرير هياكل الشجرة.
- التحليل الأساسي :
import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() print(root.tag) # Output: "data"في هذا الكود، يتم قراءة ملف XML المسمى data.xml، وعرض علامة العنصر الجذر. يمكنك التأكد من أن النتيجة المخرجة هي"data". - معالجة الأخطاء عند عدم وجود الملف :
إذا لم يوجد الملف، سيحدث خطأ FileNotFoundError، لذا يمكنك إضافة معالجة الاستثناءات كالتالي:
try: tree = ET.parse('data.xml') root = tree.getroot() except FileNotFoundError: print("File not found.")
2.2 المكتبة الخارجية: lxml
لعمليات XML المتقدمة، يُوصى بمكتبة lxml. تدعم lxml معالجة XML قوية باستخدام XPath وXSLT، مما يجعل من السهل تنفيذ المهام التي يصعب تحقيقها بالمكتبة القياسية.
- استرجاع العناصر باستخدام XPath :
from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country[@name="Liechtenstein"]') print(countries[0].tag) # Output: "country"في هذا الكود، يتم استرجاع عنصر country الذي يحتوي على السمة name=”Liechtenstein” .

3. تحليل ومعالجة XML
3.1 خطوات التحليل الأساسية
لتحليل ملف XML والعمل مع هيكل شجرته، استخدم parse() من xml.etree.ElementTree. تقرأ هذه الطريقة ملف XML وتسترجع عنصر الجذر للشجرة.
- التحليل من ملف :
import xml.etree.ElementTree as ET tree = ET.parse('example.xml') root = tree.getroot() print(root.tag) # Output: "rootTag"في هذا الكود، يقرأ ملف XMLexample.xmlوعرض اسم علامة العنصر الجذر.
3.2 البحث عن العناصر ومعالجة السمات
للبحث عن عناصر XML، استخدم find() أو findall(). يسمح ذلك باسترجاع عناصر أو سمات محددة بسهولة.
- البحث عن العناصر واسترجاع السمات :
country = root.find('country') print(country.get('name')) # Output: "Liechtenstein" - معالجة السمات :
لمعالجة سمات عنصر XML، استرجعها باستخدام
get()واضبطها باستخدامset().country.set('currency', 'CHF') print(country.attrib) # Output: {'name': 'Liechtenstein', 'currency': 'CHF'}
4. تحرير وحفظ XML
4.1 كيفية تحرير العناصر
يمكنك تحرير محتويات ملف XML بتعديل النص أو السمات لعناصر XML. على سبيل المثال، لتغيير نص عنصر، يمكنك القيام بالتالي:
- تحرير نص العنصر :
rank = root.find('.rank') rank.text = '2' print(rank.text) # Output: "2"
4.2 الكتابة إلى ملف XML
لحفظ XML المعدل إلى ملف، استخدم طريقة write().
- حفظ XML :
tree.write('updated_data.xml')

5. المعالجة المتقدمة باستخدام المكتبات الخارجية
5.1 معالجة XML المتقدمة باستخدام lxml
باستخدام مكتبة lxml ، يمكنك إجراء عمليات بحث معقدة باستخدام XPath وتحويل XML إلى تنسيقات أخرى باستخدام XSLT.
- البحث عن العناصر باستخدام XPath :
from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country') for country in countries: print(country.get('name'))
5.2 تحويل XML باستخدام XSLT
إليك مثالاً على تحويل XML إلى HTML باستخدام XSLT.
- تحويل XML إلى HTML :
from lxml import etree xml_tree = etree.parse('data.xml') xsl_tree = etree.parse('style.xsl') transform = etree.XSLT(xsl_tree) result_tree = transform(xml_tree) result_tree.write('output.html', pretty_print=True)
6. التدريب: كود مثال وشرح
6.1 مثال على استخراج البيانات من XML
هذا مثال على كود يستخراج البيانات من ملف XML ويعرض معلومات محددة.
- كود مثال :
import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() for country in root.findall('country'): name = country.get('name') rank = country.find('rank').text print(f"Country: {name}, Rank: {rank}")
6.2 مثال على تعديل وحفظ XML
هذا مثال على كود يعدل قيم عناصر XML ويحفظ التغييرات.
- كود مثال :
import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() rank = root.find('.//rank') rank.text = '2' tree.write('updated_data.xml')
7. الخلاصة
عند العمل مع XML في بايثون، استخدام المكتبة القياسية xml.etree.ElementTree يجعل معالجة XML الأساسية سهلة. بالإضافة إلى ذلك، استخدام lxml يتيح عمليات متقدمة مثل XPath و XSLT. راجع الكود المقدم في المقال وحاول تعديل XML بنفسك.




