"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > اليوم الذي قمت فيه بفحص حقل XML الآلي باستخدام Python

اليوم الذي قمت فيه بفحص حقل XML الآلي باستخدام Python

تم النشر بتاريخ 2024-08-27
تصفح:575

The Day I Automated XML Field Checking with Python

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

لقد فتحت ملف XML الأول، وقمت بمسح الخصائص ضوئيًا، وبحثت يدويًا عن الحقول المطلوبة، ووضعت علامة في المربعات أثناء ذهابي. كما قد تتوقع، أصبح الأمر متعبًا بسرعة كبيرة. وبعد بضع دقائق فقط في ملف واحد، كانت عيناي تدمع، ولم تكن لدي ثقة حقيقية في أنني لم أفوّت أي شيء مهم. أعني أن ملفات XML يمكن أن تكون دقيقة للغاية، وقد يتسبب حقل واحد مفقود في حدوث مشكلات كبيرة في المستقبل.

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

عيد الغطاس: الأتمتة للإنقاذ

كوني مبرمجًا، كانت لدي فكرة: لماذا لا أكتب نصًا للقيام بهذا العمل الرتيب من أجلي؟ بدلاً من التحقق يدويًا من كل حقل، يمكنني تشغيله تلقائيًا وضمان الدقة مع الحفاظ على سلامة عقلي في هذه العملية. لقد حان الوقت لتسخير قوة بايثون.

كان المفهوم بسيطًا:

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

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

كتابة البرنامج النصي فائدة

أول الأشياء أولاً، كنت بحاجة إلى تحميل قائمة الحقول المطلوبة. تم تخزينها في ملف JSON ضمن الحقول المطلوبة، لذلك كتبت وظيفة لقراءة هذا الملف:

import os
import json
import xml.etree.ElementTree as ET

def load_required_fields(json_file_path):
    with open(json_file_path, 'r') as file:
        data = json.load(file)
        return data.get("required_fields", [])

ثم جاء السحر الحقيقي. لقد كتبت وظيفة لتحليل كل ملف XML، وتكرار خصائصه، والتحقق من وجود كل حقل مطلوب:

def check_missing_fields(file_path, required_fields):
    # Load the XML file
    tree = ET.parse(file_path)
    root = tree.getroot()

    # Initialize variables to store counts and track missing fields
    total_properties = 0
    missing_fields_counts = {field: 0 for field in required_fields}

    # Loop through each property to check for missing fields
    for property in root.findall('.//property'):
        total_properties  = 1
        for field in required_fields:
            # Use the find() method to look for direct children of the property element
            element = property.find(f'./{field}')
            # Check if the field is completely missing (not present)
            if element is None:
                missing_fields_counts[field]  = 1

    # Print the results
    print('-----------------------------------------')
    print(f'File: {os.path.basename(file_path)}')
    print(f'Total number of properties: {total_properties}')
    print('Number of properties missing each field:')
    for field, count in missing_fields_counts.items():
        print(f'  {field}: {count} properties')
    print('-----------------------------------------')

قامت هذه الوظيفة بتحميل ملف XML، وإحصاء عدد الخصائص، وتتبع عدد الخصائص التي تفتقد كل حقل مطلوب. تقوم الوظيفة بطباعة تقرير يوضح نتائج كل ملف تمت معالجته.

أخيرًا، قمت بتجميع كل شيء معًا في الدالة main(). سيتم التكرار على جميع ملفات XML في دليل محدد وتشغيل وظيفة التحقق الميداني على كل منها:

def main():
    # Directory containing XML files
    xml_dir = 'xmls'
    json_file_path = 'required_fields.json'

    # Load required fields from JSON file
    required_fields = load_required_fields(json_file_path)

    # Iterate over each file in the xmls directory
    for file_name in os.listdir(xml_dir):
        if file_name.endswith('.xml'):
            file_path = os.path.join(xml_dir, file_name)
            check_missing_fields(file_path, required_fields)

if __name__ == "__main__":
    main()

بعد تشغيل العملية، سوف تتلقى ملخصًا للنتائج مشابهًا لهذا:

File: properties.xml
Total number of properties: 4170
Number of properties missing each field:
  Title: 0 properties
  Unit_Number: 0 properties
  Type: 0 properties
  Bedrooms: 0 properties
  Bathrooms: 0 properties
  Project: 0 properties
  Price: 0 properties
  VAT: 0 properties
  Status: 10 properties
  Area: 0 properties
  Location: 100 properties
  Latitude: 30 properties
  Longitude: 0 properties
  Apartment_Floor: 0 properties
  Block: 0 properties
  Phase: 0 properties
  Construction_Stage: 0 properties
  Plot_Size: 0 properties
  Yard: 120 properties
  Description: 0 properties
  gallery: 27 properties

النتائج: حفظ الصحة العقلية

بمجرد أن وضعت كل شيء في مكانه الصحيح، قمت بتشغيل البرنامج النصي على دليل ملفات XML الخاص بي. كانت النتيجة هي ما أحتاجه بالضبط: ملخص موجز يوضح لي عدد الخصائص في كل ملف التي كانت تفتقد الحقول، والعدد الإجمالي للخصائص في كل ملف XML.

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

الدروس المستفادة

  1. الأتمتة هي المنقذ: عندما تواجه مهام متكررة، فكر في كيفية تشغيلها تلقائيًا. لن يوفر لك الوقت فحسب، بل سيقلل أيضًا من مخاطر الأخطاء البشرية.
  2. الدقة مهمة: في مثل هذه المواقف، تكون الدقة أمرًا بالغ الأهمية. يمكن لنص بسيط مثل الذي كتبته أن يضمن عدم إغفال أي شيء، وهو أمر مهم بشكل خاص عند التعامل مع البيانات الهامة.
  3. الاستفادة من مهارات البرمجة لديك: في بعض الأحيان، ننخرط في القيام بالأشياء يدويًا، حتى عندما تكون لدينا المهارات اللازمة لجعل حياتنا أسهل. خذ لحظة للتراجع واسأل نفسك، "هل هناك طريقة أكثر فعالية للقيام بذلك؟"

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

يمكنك البدء بسرعة في هذه الأتمتة عن طريق استنساخ مستودع XML Checker الذي قمت بإنشائه. سيوفر لك هذا كل ما تحتاجه، بما في ذلك البرنامج النصي وملفات الأمثلة. ومن هناك، ستتمكن من تشغيل الأتمتة بنفسك، وتخصيصها لتناسب احتياجاتك أو توسيع وظائفها بشكل أكبر.

يتمتع!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/rafaelogic/the-day-i-automated-xml-field-checking-with-python-59ja?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3