تقنية

appendChild في بايثون: هل يبقى الابن عند الأب القديم؟

صفر أبناء عند a وابن عند b
بعد النقل. [1] [2]

إضافة عقدة موجودة قد تغير أبها في هذه الواجهة. [1] [2]

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

لا؛ appendChild يزيل الابن من الأب القديم هنا. [1] [2]

  • نضيف leaf إلى a ثم إلى b. [1] [2]
  • عدد أبناء a يصبح 0؛ عدد أبناء b هو 1. [1] [2]
  • leaf.parentNode is b صحيح. [1] [2]
  • القيمة المعادة هي leaf نفسه. [1] [2]
  • اختبرنا minidom في 3.12.14 دون تحليل XML. [1] [2]

المثال

from xml.dom.minidom import Document
d=Document()
a=d.createElement('a');b=d.createElement('b')
leaf=d.createElement('leaf')
a.appendChild(leaf)
r=b.appendChild(leaf)
print(len(a.childNodes),len(b.childNodes))
print(leaf.parentNode is b,r is leaf)

[1] [2]

النقل والهوية

المصدر هنا يستدعي حذف الابن من أب سابق قبل إلحاقه بالجديد. المخرجان 0 1 ثم True True. لم ينشئ الاستدعاء نسخة من الابن. [1] [2]

الأب الجديد والابن نفسه
فحص الهوية. [1] [2]

حدود النتيجة

الأبوان عنصران مؤلفان من المستند نفسه. لم نقرأ ملفًا أو نسلسل XML، ولا نعمم هذا السلوك على ElementTree أو كل مكتبات XML. [1] [2]

المراجع

  1. Python 3.12: DOM appendChild
  2. CPython 3.12.14: minidom.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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