كيف يمكنني معرفة أصل عنصر عند استخدام طريقة iterparse في ElementTree؟
-
27-10-2019 - |
سؤال
أريد تكرار عناصر ملف xml وإخراج كل عنصر ، ما لم يكن الأصل ميزة.
لذلك في الرمز الكاذب Genacodicetagpre
كيف يمكنني الحصول على أصل العنصر؟أعلم أن هذا ممكن مع وظيفة tree.getiterator () ، لكنني لا أريد إنشاء الشجرة الكاملة لأن ملفات xml قليلة الحجم.
المحلول
إذا قمت بتمكين أحداث رمز الترميز العام ، يمكنك تتبع عقد السلف باستخدام مكدس.إذا كنت تقصد حقًا قمع جميع أحفاد الرمز العام ، بدلاً من الأطفال فقط ، يمكنك استخدام علامة بسيطة كما هو موضح في إجابة أخرى.
يمكنك استخدام رمز الترقيم العام لإزالة جميع العناصر النهائية.اقرأ هذا .
الرمز: Genacodicetagpre
الإخراج أدناه.ستلاحظ من عقد الكود العام أن رمز الترقيم العام لا يزيل العناصر التي لم يتم تحليلها بالكامل بعد.هذا يعني أن مقدار الذاكرة المستخدمة هو O (عمق الشجرة) ، وليس O (إجمالي عدد العناصر في الشجرة) Genacodicetagpre
نصائح أخرى
يمكنك القيام بذلك باستخدام lxml .لديها getparent ().
بدلاً من ذلك ، من الممكن التعامل مع أحداث رمز الترقيم العام وأحداث الكود البرمجي العام وتخطي الأطفال برمز الترقيم العام باستخدام رمز الترقيم العام: Genacodicetagpre