تقنية

replaceChild في minidom: هل تعيد العقدة الجديدة؟

minidom; own:[old=Element("bud")]; new=Element("leaf"); r=own.replaceChild(new,old); r is old:True; r is new:False
معاد قديم.

قيمة replaceChild المعادة ليست العنصر الجديد في اختبارنا. [2]

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

لا؛ مع عنصرين مختلفين تعيد old هنا. [2]

  • قيمة replaceChild المعادة ليست العنصر الجديد في اختبارنا. [2]
  • على CPython 3.12.14 ننشئ Document وعنصر own بابن old اسمه bud؛ new عنصر مستقل اسمه leaf. [1] [2]
  • الاستدعاء r=own.replaceChild(new,old) يعيد old نفسه، لا new؛ الابن الحالي هو new وأب old يصبح None. [2]
  • التنفيذ يستبدل موضع الابن ويضبط الأب ثم يعيد oldChild في هذا المسار العادي. [2]
  • تحكم مستقل: control بابن same؛ replaceChild(same,same) تعيد None وتبقي الابن نفسه. حالة تطابق الهوية لها رجوع مبكر؛ لا نختبر DocumentFragment أو أخطاء الاستدعاء أو عبور المستندات. [2]

ما المعاد؟

قيمة replaceChild المعادة ليست العنصر الجديد في اختبارنا. [2]

عنصران مختلفان

على CPython 3.12.14 ننشئ Document وعنصر own بابن old اسمه bud؛ new عنصر مستقل اسمه leaf. [1] [2]

الهوية والأب

الاستدعاء r=own.replaceChild(new,old) يعيد old نفسه، لا new؛ الابن الحالي هو new وأب old يصبح None. [2]

from xml.dom.minidom import Document d=Document();own=d.createElement("own") old=d.createElement("bud");new=d.createElement("leaf") own.appendChild(old);r=own.replaceChild(new,old) print(r is old,r is new) print(own.firstChild is new,old.parentNode is None) [1] [2]

minidom; control:[same=Element("bud")]; x=control.replaceChild(same,same); x is None:True; children:1; firstChild is same:True
هوية واحدة.

مسار وتحكم

التنفيذ يستبدل موضع الابن ويضبط الأب ثم يعيد oldChild في هذا المسار العادي. [2]

control=d.createElement("control");same=d.createElement("bud") control.appendChild(same) x=control.replaceChild(same,same) print(x is None,len(control.childNodes),control.firstChild is same) [1] [2]

تحكم مستقل: control بابن same؛ replaceChild(same,same) تعيد None وتبقي الابن نفسه. حالة تطابق الهوية لها رجوع مبكر؛ لا نختبر DocumentFragment أو أخطاء الاستدعاء أو عبور المستندات. [2]

المراجع

  1. Python Node.replaceChild
  2. CPython minidom

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

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