تقنية

Element.iter في بايثون: هل يستبعد عنصر البداية؟

iter("leaf") يعطي bud ثم seed في مثالنا.
الاجتياز يشمل الجذر.

iter يشمل عنصر البداية إن طابق الوسم المطلوب، مع العناصر التابعة المطابقة. [1]

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

لا؛ يشمله الاجتياز إذا طابق الوسم المطلوب. [1]

  • iter يشمل عنصر البداية إن طابق الوسم المطلوب، مع العناصر التابعة المطابقة. [1]
  • الترتيب حسب المستند، مع التعمق أولًا؛ تعديل بنية الشجرة أثناء الاجتياز يجعل النتيجة غير محددة. [1]
  • على CPython 3.12.14، الجذر leaf بنص bud، وتحته branch يحوي leaf بنص seed. [1]
  • iter("leaf") يعطي الجذر ثم المتداخل؛ .//leaf يعطي المتداخل وحده؛ نتائجنا تشير للعناصر نفسها. [1]
  • تحكم: مرشح branch يعطي عنصرًا واحدًا، وmissing لا يعطي عناصر؛ أزواج الوسم والنص تطابق قيمًا مستقلة؛ يبقى المدخل. [1]

البداية ضمن الاجتياز

iter يشمل عنصر البداية إن طابق الوسم المطلوب، مع العناصر التابعة المطابقة. [1]

الترتيب وحدود التعديل

الترتيب حسب المستند، مع التعمق أولًا؛ تعديل بنية الشجرة أثناء الاجتياز يجعل النتيجة غير محددة. [1]

وسم في مستويين

على CPython 3.12.14، الجذر leaf بنص bud، وتحته branch يحوي leaf بنص seed. [1]

import xml.etree.ElementTree as ET raw=("<leaf>bud<branch>" "<leaf>seed</leaf></branch></leaf>") root=ET.fromstring(raw) items=list(root.iter("leaf")) below=root.findall(".//leaf") [1]

.//leaf يعطي seed دون الجذر bud هنا.
المسار يستبعد الجذر.

المقارنة والتحكم

iter("leaf") يعطي الجذر ثم المتداخل؛ .//leaf يعطي المتداخل وحده؛ نتائجنا تشير للعناصر نفسها. [1]

for nodes in (items,below): print([node.text for node in nodes]) print(items[0] is root) [1]

تحكم: مرشح branch يعطي عنصرًا واحدًا، وmissing لا يعطي عناصر؛ أزواج الوسم والنص تطابق قيمًا مستقلة؛ يبقى المدخل. [1]

المراجع

  1. Python ElementTree

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

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