تقنية

ElementTree في بايثون: هل يحتفظ fromstring بالتعليقات؟

fromstring الافتراضية تبني ابنًا واحدًا leaf دون عقدة التعليق.
الافتراضي لا يدرج التعليق.

المحلل الافتراضي يتجاوز التعليقات بدل إنشاء عقد لها في الشجرة. [1]

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

لا افتراضيًا؛ يمكن إعداد البناء للاحتفاظ بالتعليقات داخل الجذر. [1]

  • المحلل الافتراضي يتجاوز التعليقات بدل إنشاء عقد لها في الشجرة. [1]
  • TreeBuilder مع insert_comments=True يدرج التعليقات داخل العنصر الجذري، لا خارجه. [1]
  • على CPython 3.12.14، raw أدناه يحوي تعليق outer خارج الجذر، وbud داخله، وعنصر leaf. [1]
  • الافتراضي يعطي ابنًا واحدًا، leaf؛ الإعداد المخصص يعطي اثنين: تعليق bud ثم leaf بنص seed. [1]
  • تحكم: أزواج نوع العقدة ونصها تطابق قيمًا مؤلفة مستقلة؛ outer ليس ضمن الأبناء؛ يبقى raw. [1]

الشجرة الافتراضية

المحلل الافتراضي يتجاوز التعليقات بدل إنشاء عقد لها في الشجرة. [1]

حدود الإعداد

TreeBuilder مع insert_comments=True يدرج التعليقات داخل العنصر الجذري، لا خارجه. [1]

تعليق داخل الجذر وخارجه

على CPython 3.12.14، raw أدناه يحوي تعليق outer خارج الجذر، وbud داخله، وعنصر leaf. [1]

import xml.etree.ElementTree as ET raw="<!--outer--><root><!--bud--><leaf>seed</leaf></root>" standard=ET.fromstring(raw) print(len(standard)) [1]

insert_comments=True يعطي تعليق bud ثم leaf داخل الجذر في المثال.
الإعداد يدرج التعليق الداخلي.

الاحتفاظ والتحكم

الافتراضي يعطي ابنًا واحدًا، leaf؛ الإعداد المخصص يعطي اثنين: تعليق bud ثم leaf بنص seed. [1]

parser=ET.XMLParser(target=ET.TreeBuilder(insert_comments=True)) kept=ET.fromstring(raw,parser=parser) print(len(kept),kept[0].text,kept[1].text) [1]

تحكم: أزواج نوع العقدة ونصها تطابق قيمًا مؤلفة مستقلة؛ outer ليس ضمن الأبناء؛ يبقى raw. [1]

المراجع

  1. Python ElementTree

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

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