تقنية

pulldom في بايثون: هل صفر الأبناء يعني أن XML فارغ؟

عدد أبناء العقدة صفر قبل التوسيع وواحد بعده
ابن في نصنا. [1] [2]

نفحص عقدة قبل توسيعها وبعده. [1] [2]

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

لا؛ وسع العقدة قبل فحص أبنائها. [1] [2]

  • في نصنا <r><x/></r> ابن واحد. [1] [2]
  • عند حدث بداية r، العدد 0. [1] [2]
  • بعد expandNode، يصبح 1. [1] [2]
  • التوسيع يسحب أحداث الأبناء من التدفق. [1] [2]
  • لم نغيّر نص XML الأصلي. [1] [2]
  • نطاقنا 3.12.14 دون نطاقات أسماء أو DTD ومدخلات غير موثوقة. [1] [2]

المثال

from xml.dom import pulldom as p
s=p.parseString('<r><x/></r>')
next(s)
_,n=next(s)
print(len(n.childNodes))
s.expandNode(n)
print(len(n.childNodes))
s.clear()

[1] [2]

الناتجان 0 ثم 1. نتجاوز حدث بدء المستند للوصول إلى بداية الجذر. [1] [2]

العقدة والأحداث

العقدة غير موسعة؛ الصفر يصف حالتها الآن. لا ينفي وجود <x/> في النص. [1] [2]

نص XML ثابت والابن x مرتبط بالعقدة بعد التوسيع
ربط الابن. [1] [2]

تستهلك expandNode أحداث الفرع لربط أبنائه؛ لا تتوقع ظهورها ثانية في الحلقة نفسها. [1] [2]

حدود المثال

نص مؤلف دون نطاقات أسماء أو DTD. لم نفحص مدخلات غير موثوقة أو كل الإصدارات. [1] [2]

المراجع

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

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