1) DOM (محلل JAXP Crimson)
DOM هو معيار W3C الرسمي لتمثيل مستندات XML بطريقة مستقلة عن النظام الأساسي واللغة. DOM عبارة عن مجموعة من العقد أو أجزاء من المعلومات منظمة في هيكل هرمي. يسمح هذا التسلسل الهرمي للمطورين بالبحث في الشجرة عن معلومات محددة. يتطلب تحليل هذه البنية عادةً تحميل المستند بأكمله وإنشاء التسلسل الهرمي قبل القيام بأي عمل. ولأنه يعتمد على التسلسل الهرمي للمعلومات، يعتبر DOM مستندًا إلى الشجرة أو قائمًا على الكائن. يتمتع DOM والمعالجة المستندة إلى الشجرة بشكل عام بالعديد من المزايا. أولاً، نظرًا لأن الشجرة ثابتة في الذاكرة، فيمكن تعديلها حتى يتمكن التطبيق من إجراء تغييرات على البيانات والهياكل. كما يسمح أيضًا بالتنقل لأعلى ولأسفل الشجرة في أي وقت، بدلاً من عملية لمرة واحدة مثل SAX. DOM أيضًا أسهل في الاستخدام.
2) ساكس
تشبه مزايا معالجة SAX إلى حد كبير مزايا وسائط البث. يمكن أن يبدأ التحليل على الفور بدلاً من انتظار معالجة كافة البيانات. وأيضًا، نظرًا لأن التطبيق يتحقق فقط من البيانات أثناء قراءتها، ليست هناك حاجة لتخزين البيانات في الذاكرة. هذه ميزة كبيرة للمستندات الكبيرة. في الواقع، لا يحتاج التطبيق حتى إلى تحليل المستند بأكمله، بل يمكنه التوقف عن التحليل عند استيفاء شرط معين. بشكل عام، يعد SAX أيضًا أسرع بكثير من بديله DOM.
دوم أو ساكس؟ بالنسبة للمطورين الذين يحتاجون إلى كتابة التعليمات البرمجية الخاصة بهم لمعالجة مستندات XML، يعد اختيار نموذج التحليل DOM أو SAX قرارًا تصميميًا مهمًا للغاية. يستخدم DOM بنية شجرة للوصول إلى مستندات XML، بينما يستخدم SAX نموذج حدث.
يقوم محلل DOM بتحويل مستند XML إلى شجرة تحتوي على محتواه ويمكنه اجتياز الشجرة. تتمثل ميزة استخدام DOM لتحليل النموذج في أن البرمجة سهلة، حيث يحتاج المطورون فقط إلى استدعاء تعليمات بناء الشجرة، ثم استخدام واجهات برمجة تطبيقات التنقل للوصول إلى عقد الشجرة المطلوبة لإكمال المهمة. يمكن إضافة العناصر الموجودة في الشجرة وتعديلها بسهولة. ومع ذلك، نظرًا لأن مستند XML بأكمله يحتاج إلى معالجة عند استخدام محلل DOM، فإن متطلبات الأداء والذاكرة مرتفعة نسبيًا، خاصة عند مواجهة ملفات XML كبيرة. نظرًا لقدرات الاجتياز، غالبًا ما يتم استخدام موزعي DOM في الخدمات التي تحتاج فيها مستندات XML إلى التغيير بشكل متكرر.
يستخدم محلل SAX نموذجًا يعتمد على الحدث، ويمكنه تشغيل سلسلة من الأحداث عند تحليل مستند XML، ويمكنه تنشيط طريقة رد الاتصال لإخبار الطريقة بالعثور على العلامة المحددة. عادةً ما يكون لـ SAX متطلبات ذاكرة أقل لأنه يسمح للمطورين بتحديد العلامات التي سيتم معالجتها، خاصة عندما يحتاج المطورون فقط إلى معالجة جزء من البيانات الموجودة في المستند، فإن قابلية التوسع لـ SAX تنعكس بشكل أفضل. لكن الترميز يكون أكثر صعوبة عند استخدام محلل SAX، ومن الصعب الوصول إلى بيانات مختلفة متعددة في نفس المستند في نفس الوقت.
3) جيدوم http://www.jdom.org
الغرض من JDOM هو أن يكون نموذج مستند خاصًا بـ Java يعمل على تبسيط التفاعل مع XML ويكون أسرع من تنفيذه باستخدام DOM. تمت ترقية JDOM والترويج له بشكل كبير منذ أن كان أول نموذج خاص بـ Java. يتم النظر في استخدامه في نهاية المطاف باعتباره "ملحق Java القياسي" عبر "طلب مواصفات Java JSR-102". بدأ تطوير JDOM منذ أوائل العقد الأول من القرن الحادي والعشرين.
هناك اختلافان رئيسيان بين JDOM وDOM. أولاً، يستخدم JDOM فقط الفئات المحددة وليس الواجهات. يؤدي هذا إلى تبسيط واجهة برمجة التطبيقات في بعض النواحي، ولكنه يحد أيضًا من المرونة. ثانيًا، تستخدم واجهة برمجة التطبيقات (API) فئة المجموعات على نطاق واسع، مما يبسط استخدامها لمطوري Java الذين هم على دراية بهذه الفئات بالفعل.
تنص وثائق JDOM على أن الغرض منها هو "حل 80% (أو أكثر) من مشكلات Java/XML باستخدام 20% (أو أقل) من الجهد" (بافتراض 20% بناءً على منحنى التعلم). من المؤكد أن JDOM مفيد لمعظم تطبيقات Java/XML، ويجد معظم المطورين أن واجهة برمجة التطبيقات (API) أسهل بكثير في الفهم من DOM. يتضمن JDOM أيضًا عمليات فحص مكثفة إلى حد ما لسلوك البرنامج لمنع المستخدمين من القيام بأي شيء غير منطقي في XML. ومع ذلك، لا يزال يتطلب منك فهم XML جيدًا بما يكفي للقيام بأكثر من الأساسيات (أو حتى فهم الأخطاء في بعض الحالات). قد يكون هذا عملاً ذا معنى أكبر من تعلم واجهات DOM أو JDOM.
JDOM نفسها لا تحتوي على محلل. يستخدم عادةً محلل SAX2 لتحليل مستندات XML المدخلة والتحقق من صحتها (على الرغم من أنه يمكن أيضًا أن يأخذ تمثيلات DOM التي تم إنشاؤها مسبقًا كمدخلات). يحتوي على محولات لإخراج تمثيلات JDOM إلى تدفقات أحداث SAX2 أو نماذج DOM أو مستندات نصية XML. JDOM هو مصدر مفتوح تم إصداره بموجب ترخيص Apache.
4) DOM4J http://dom4j.sourceforge.net
على الرغم من أن DOM4J يمثل تطورًا مستقلاً تمامًا، إلا أنه كان في الأصل شوكة ذكية لـ JDOM. وهو يشتمل على العديد من الميزات التي تتجاوز تمثيل مستندات XML الأساسية، بما في ذلك دعم XPath المتكامل ودعم مخطط XML والمعالجة المستندة إلى الأحداث للمستندات الكبيرة أو المتدفقة. كما يوفر أيضًا خيارات لإنشاء تمثيلات للمستندات مع إمكانيات الوصول المتوازي من خلال DOM4J API وواجهات DOM القياسية. لقد كان قيد التطوير منذ النصف الثاني من عام 2000.
لدعم كل هذه الميزات، يستخدم DOM4J واجهات وأساليب فئة أساسية مجردة. يستخدم DOM4J فئة المجموعات في واجهة برمجة التطبيقات (API) بشكل مكثف، ولكنه يوفر أيضًا في كثير من الحالات بدائل تسمح بأداء أفضل أو أسلوب ترميز مباشر أكثر. الفائدة المباشرة هي أنه على الرغم من أن DOM4J يدفع ثمن واجهة برمجة التطبيقات الأكثر تعقيدًا، إلا أنه يوفر مرونة أكبر بكثير من JDOM.
أثناء إضافة المرونة وتكامل XPath والتعامل مع المستندات الكبيرة، فإن أهداف DOM4J هي نفس أهداف JDOM: سهولة الاستخدام والتشغيل البديهي لمطوري Java. ويهدف أيضًا إلى أن يكون حلاً أكثر اكتمالاً من JDOM، مما يحقق هدف التعامل بشكل أساسي مع جميع مشكلات Java/XML. أثناء تحقيق هذا الهدف، فإنه يركز بشكل أقل من JDOM على منع سلوك التطبيق غير الصحيح.
DOM4J عبارة عن Java XML API ممتاز جدًا، ويتميز بأداء ممتاز ووظائف قوية وسهولة شديدة في الاستخدام، كما أنه برنامج مفتوح المصدر. في الوقت الحاضر، يمكنك أن ترى أن المزيد والمزيد من برامج Java تستخدم DOM4J لقراءة وكتابة XML. ومن الجدير بالذكر أنه حتى JAXM من Sun يستخدم أيضًا DOM4J.
2... قارن
1) يتمتع DOM4J بأفضل أداء. حتى أن JAXM من Sun يستخدم أيضًا DOM4J. حاليًا، تستخدم العديد من المشاريع مفتوحة المصدر DOM4J على نطاق واسع، على سبيل المثال، يستخدم Hibernate الشهير أيضًا DOM4J لقراءة ملفات تكوين XML. إذا لم تكن قابلية النقل مصدر قلق، فاستخدم DOM4J.
2) كان أداء JDOM وDOM ضعيفًا أثناء اختبار الأداء، وفاضت الذاكرة عند اختبار مستند بحجم 10 ملايين. ومن الجدير أيضًا التفكير في استخدام DOM وJDOM في حالة المستندات الصغيرة. على الرغم من أن مطوري JDOM صرحوا أنهم يتوقعون التركيز على مشكلات الأداء قبل الإصدار الرسمي، إلا أنه ليس لديه ما ينصح به حقًا من وجهة نظر الأداء. بالإضافة إلى ذلك، لا يزال DOM خيارًا جيدًا للغاية. يُستخدم تنفيذ DOM على نطاق واسع في العديد من لغات البرمجة. وهو أيضًا الأساس للعديد من المعايير الأخرى المتعلقة بـ XML، وبما أنه موصى به رسميًا بواسطة W3C (على عكس نموذج Java غير القياسي)، فقد يكون مطلوبًا أيضًا في أنواع معينة من المشاريع (مثل استخدام DOM في جافا سكريبت).
3) يعمل SAX بشكل أفضل، وهو ما يعتمد على طريقة التحليل المحددة الخاصة به - المستندة إلى الأحداث. يكتشف SAX تدفق XML الوارد، لكنه لا يقوم بتحميله في الذاكرة (بالطبع عند قراءة تدفق XML، سيتم إخفاء بعض المستندات مؤقتًا في الذاكرة).
3. الاستخدام الأساسي لأربعة أساليب تشغيل XML
ملف اكس ام ال: