تقنية

Element.remove في بايثون: هل يكفي تطابق الوسم والنص؟

عنصر منفصل بالوسم والنص نفسيهما يرفع ValueError عند الحذف.
المماثل لا يحذف الابن.

remove تزيل الابن بحسب هوية الكائن، لا الوسم أو المحتوى. [1]

الخلاصة السريعة

لا؛ تطابق الوسم والنص لا يكفي في المثال. [1]

  • remove تزيل الابن بحسب هوية الكائن، لا الوسم أو المحتوى. [1]
  • عنصران بالوسم leaf والنص bud قد يكونان كائنين منفصلين. [1]
  • على CPython 3.12.14، root أدناه له ابن واحد؛ wrong عنصر منفصل. [1]
  • root.remove(wrong) ترفع ValueError؛ يبقى ابن root نفسه وعدده 1. [1]
  • تحكم: حذف الابن نفسه يترك صفر أبناء؛ يبقى نصه bud عبر مرجعه؛ يطابق الوسم والنص قيمتين مؤلفتين مستقلتين. [1]

هوية الكائن

remove تزيل الابن بحسب هوية الكائن، لا الوسم أو المحتوى. [1]

وسم ونص متماثلان

عنصران بالوسم leaf والنص bud قد يكونان كائنين منفصلين. [1]

عنصر منفصل

على CPython 3.12.14، root أدناه له ابن واحد؛ wrong عنصر منفصل. [1]

import xml.etree.ElementTree as ET root=ET.fromstring("<root><leaf>bud</leaf></root>") wrong=ET.fromstring("<leaf>bud</leaf>") try: root.remove(wrong) except ValueError: print("ValueError") [1]

حذف الابن نفسه يترك عدد أبناء root صفرًا.
الابن نفسه يحذف بنجاح.

الحذف والتحكم

root.remove(wrong) ترفع ValueError؛ يبقى ابن root نفسه وعدده 1. [1]

actual=root.find("leaf") root.remove(actual) print(len(root),actual.text) [1]

تحكم: حذف الابن نفسه يترك صفر أبناء؛ يبقى نصه bud عبر مرجعه؛ يطابق الوسم والنص قيمتين مؤلفتين مستقلتين. [1]

المراجع

  1. Python ElementTree

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.