تقنية

characters في SAX: هل المعالج الأساسي يجمع النص؟

المعالج الأساسي والجامع
مقارنة استدعاءات مؤلفة. [1] [2]

نقارن المعالج الأساسي بجامع نكتبه. [1] [2]

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

لا؛ اكتب سلوك جمع النص صراحة. [1] [2]

  • استدعاء الأساسي بـR يعيد None دون جمع. [1] [2]
  • جامعنا يحفظ الأجزاء في قائمة خاصة بالكائن. [1] [2]
  • استدعاءان يدويان بـR ثم S ينتجان RS بعد الوصل. [1] [2]
  • قد يقسم محلل SAX النص المتصل إلى أجزاء. [1] [2]
  • جامع المثال يقبل نصوصًا؛ ليس جامع بايتات. [1] [2]
  • اختبرنا 3.12.14 دون تحليل XML أو ملف. [1] [2]

المثال

from xml.sax.handler import ContentHandler
h=ContentHandler()
print(h.characters('R'))
class Keep(ContentHandler):
 def __init__(self):super().__init__();self.parts=[]
 def characters(self,s):self.parts.append(s)
k=Keep()
k.characters('R');k.characters('S')
print(''.join(k.parts))

[1] [2]

المخرجان None ثم RS. [1] [2]

الإشعار والجمع

الأساسي لا يحفظ هذه الأجزاء؛ القائمة والوصل من تصميمنا. [1] [2]

أجزاء محفوظة ثم وصلها
القائمة من تصميمنا. [1] [2]

لا تفترض أن استدعاءً واحدًا يمثل كل النص المتصل؛ اجمع الأجزاء المطلوبة بترتيبها. [1] [2]

حدود المثال

نستدعي الطريقة يدويًا بنصوص. لم نختبر محللًا أو بايتات أو حدود العناصر أو صلاحية XML. [1] [2]

المراجع

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

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