كيف يمكنني معرفة أصل عنصر عند استخدام طريقة iterparse في ElementTree؟

StackOverflow https://stackoverflow.com/questions/9332103

سؤال

أريد تكرار عناصر ملف xml وإخراج كل عنصر ، ما لم يكن الأصل ميزة.

لذلك في الرمز الكاذب Genacodicetagpre

كيف يمكنني الحصول على أصل العنصر؟أعلم أن هذا ممكن مع وظيفة tree.getiterator () ، لكنني لا أريد إنشاء الشجرة الكاملة لأن ملفات xml قليلة الحجم.

هل كانت مفيدة؟

المحلول

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

يمكنك استخدام رمز الترقيم العام لإزالة جميع العناصر النهائية.اقرأ هذا .

الرمز: Genacodicetagpre

الإخراج أدناه.ستلاحظ من عقد الكود العام أن رمز الترقيم العام لا يزيل العناصر التي لم يتم تحليلها بالكامل بعد.هذا يعني أن مقدار الذاكرة المستخدمة هو O (عمق الشجرة) ، وليس O (إجمالي عدد العناصر في الشجرة) Genacodicetagpre

نصائح أخرى

يمكنك القيام بذلك باستخدام lxml .لديها getparent ().

بدلاً من ذلك ، من الممكن التعامل مع أحداث رمز الترقيم العام وأحداث الكود البرمجي العام وتخطي الأطفال برمز الترقيم العام باستخدام رمز الترقيم العام: Genacodicetagpre

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top