تقنية

getElementsByTagName في minidom: هل تتغير عضوية القائمة المحفوظة؟

minidom; own:leaf; saved=own.getElementsByTagName("leaf"); append leaf; len(saved):1 -> 1; fresh search:2
بحث محفوظ.

القائمة المحفوظة لا تضيف الابن الجديد تلقائيًا في اختبار minidom. [2]

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

لا؛ المحفوظة تبقى بعضو واحد هنا. [2]

  • القائمة المحفوظة لا تضيف الابن الجديد تلقائيًا في اختبار minidom. [2]
  • على CPython 3.12.14، own عنصر له leaf واحد؛ saved=own.getElementsByTagName("leaf"). [1] [2]
  • نضيف leaf ثانيًا؛ len(saved) تبقى 1، والبحث الجديد يعطي 2. المحفوظة تحوي العنصر الأول نفسه. [2]
  • الدالة تنشئ NodeList جديدة للبحث؛ تجمع المراجع المطابقة، ولا تربط عضويتها آليًا بتعديلات الأبناء. [2]
  • تحكم مستقل: control عنصر بلا أبناء وchildren=control.childNodes؛ نضيف عنصري leaf جديدين، فتبلغ len(children) مقدار 2 وتبقى القائمة نفسها. لا نختبر محللًا أو DOM للمتصفح أو مسارات الأعماق. [2]

عضوية محفوظة

القائمة المحفوظة لا تضيف الابن الجديد تلقائيًا في اختبار minidom. [2]

حفظ البحث

على CPython 3.12.14، own عنصر له leaf واحد؛ saved=own.getElementsByTagName("leaf"). [1] [2]

إضافة وبحث

نضيف leaf ثانيًا؛ len(saved) تبقى 1، والبحث الجديد يعطي 2. المحفوظة تحوي العنصر الأول نفسه. [2]

from xml.dom.minidom import Document d=Document();own=d.createElement("own") first=d.createElement("leaf");own.appendChild(first) saved=own.getElementsByTagName("leaf") print(len(saved)) own.appendChild(d.createElement("leaf")) fresh=own.getElementsByTagName("leaf") print(len(saved),len(fresh),saved[0] is first) [1] [2]

minidom; control:empty; children=control.childNodes; append 2 new leaf nodes; len(children):0 -> 2; children is control.childNodes:True
أبناء متغيرون.

تنفيذ وتحكم

الدالة تنشئ NodeList جديدة للبحث؛ تجمع المراجع المطابقة، ولا تربط عضويتها آليًا بتعديلات الأبناء. [2]

control=d.createElement("control");children=control.childNodes print(len(children)) for i in range(2):control.appendChild(d.createElement("leaf")) print(len(children),children is control.childNodes) [1] [2]

تحكم مستقل: control عنصر بلا أبناء وchildren=control.childNodes؛ نضيف عنصري leaf جديدين، فتبلغ len(children) مقدار 2 وتبقى القائمة نفسها. لا نختبر محللًا أو DOM للمتصفح أو مسارات الأعماق. [2]

المراجع

  1. Python DOM
  2. CPython minidom

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

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