معالجة XML في بايثون: دليل شامل من المكتبة القياسية إلى lxml

1. المقدمة

بايثون هي لغة برمجة مرنة يمكنها التعامل بسهولة مع تنسيقات بيانات متنوعة. من بينها، XML (لغة الترميز القابلة للتوسعة) تستخدم بشكل شائع لتبادل وتخزين البيانات المنظمة، وتُستخدم على نطاق واسع في استجابات API وملفات التكوين. في بايثون، يمكنك العمل بسهولة مع XML باستخدام المكتبة القياسية أو المكتبات الخارجية. يشرح هذا المقال بوضوح كل شيء من العمليات الأساسية إلى المتقدمة لـ XML باستخدام بايثون.

Ad

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” .

Ad
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

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" في هذا الكود، يقرأ ملف XML example.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'}
Ad

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')

Ad
年収訴求

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)
Ad

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')
Ad

7. الخلاصة

عند العمل مع XML في بايثون، استخدام المكتبة القياسية xml.etree.ElementTree يجعل معالجة XML الأساسية سهلة. بالإضافة إلى ذلك، استخدام lxml يتيح عمليات متقدمة مثل XPath و XSLT. راجع الكود المقدم في المقال وحاول تعديل XML بنفسك.

Ad
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール