1. فهم تقنية تحليل XML
1.1. مفاهيم XML ذات الصلة
(1) DTD: قواعد بناء الجملة XML ، والتي هي آلية التحقق من ملفات XML. يمكنك مقارنة مستندات XML مع ملفات DTD لمعرفة ما إذا كان المستند يتوافق مع المواصفات وما إذا كانت العناصر والعلامات تستخدم بشكل صحيح.
(2) XML هو أساس الخدمية.
1.2. تقنية معالجة XML
(1) من أجل استخدام XML ، نحتاج إلى الوصول إلى البيانات من خلال معالج XML أو XMLAPI. حاليًا ، يوفر JAXP طريقتين لمعالجة XML: DOM و SAX.
① DOM: تصل DOM إلى البيانات والهياكل في مستندات XML برمجيًا ، استنادًا إلى بنية شجرة مستندات XML في الذاكرة. العيب هو أنه يتطلب الكثير من النفقات العامة لتحميل مستند XML بالكامل في الذاكرة.
②SAX: استنادًا إلى مقطع واحد يحركه الحدث ، يتم استخدام شريحة واحدة لتحليل شريحة واحدة ، والتي تحل مشكلة تناول الكثير من الذاكرة ، لكن عيوبها هي أنه لا يمكن الوصول إلى المستندات بشكل عشوائي.
(2) من أجل حل مشكلات DOM و SAX ، ظهرت مجموعة streamapiforxml المستندة إلى الدفق (Stax for Short). تمت إضافته إلى JAXP1.4 من JDK6 ، كما أنه يحركه Stax.
(3) تقوم كل من DOM و SAX و Stax بمعالجة XML من بنية المستند ، ولكن العديد من التطبيقات تركز فقط على بيانات المستند نفسها ، لذلك ظهرت تقنية ربط بيانات XML.
ربط البيانات: يشير إلى عملية استخراج البيانات من وسائط التخزين (مستندات XML وقواعد البيانات) وتمثيل هذه البيانات من خلال البرامج ، أي ربط البيانات بهيكل الذاكرة الذي يمكن للجهاز الظاهري فهمه وتشغيله.
إطار ربط XML: Castor ، Jaxb ، Jibx ، Quick ، Zeus ، إلخ.
2. أداة معالجة XML: Xstream
2.1. نظرة عامة على Xstream
(1) Xstream هو إطار مفتوح المصدر بسيط وسهل الاستخدام لتسلسل كائنات Java في XML ، أو تخلص من XML في كائنات Java. الميزات الرئيسية لـ Xstream:
(2) تكوين الهندسة المعمارية Xstream:
المحولات: عندما يواجه Xstream كائنًا يحتاج إلى تحويله ، يتم تفويضه إلى تطبيق المحول المناسب.
IO (الإدخال/الإخراج): يتم استخلاص Xstream من بيانات XML الأساسية من خلال WhiararchicalStreamwriter و HierarchicalstreamReader ، ويستخدم في عمليات التسلسل والهزال على التوالي.
السياق: عند قيام Xstream بتسلسل كائنات Deserialization ، يتم إنشاء فئتين MarshallingContext و UnmarshallingContext ، وتعامل بوابة البرج البيانات وتفوضها إلى المحول المناسب.
واجهة (مدخل موحد): دمج النقاط الثلاث المذكورة أعلاه معًا وفتحها على المستخدمين بواجهة موحدة.
2.2. بداية سريعة
(1) إنشاء Xstream وحدد محلل XML
XstreamxStream = newxStream (newDomDriver ()) ؛
إذا لم تحدد محللًا ، فسيستخدم Xstream Parser XPP (XMLPullParser) افتراضيًا ، وهو محلل عالية السرعة.
(2) الأمثلة على النحو التالي:
2.3. استخدام الاسم المستعار Xstream
(1) في المثال أعلاه ، يتوافق اسم الفئة الكاملة لكائن Java مع عنصر الجذر لملف XML ، ويتوافق اسم السمة مع عنصر العقدة في ملف XML. ومع ذلك ، في المواقف الفعلية ، قد يكون كل من كائن Java وكائن XML قد تم تحديدهم بالفعل ، لذلك هناك حاجة إلى تعيين الاسم المستعار.
Xstream لديه 3 تكوينات الاسم المستعار:
اسم الفئة: استخدم الاسم المستعار (StringName ، ClasStype).
عضو الفئة الاسم المستعار: استخدم aliasfield (Stringalias ، classDefinedIn ، StringfieldName).
يتم استخدام أعضاء الفصل كأماكن استعمانية السمة: استخدام aliasattribute (classDefinedIn ، stringAttributEname ، stringalias) ، وتسميةهم بمفردهم ليس له أي معنى ، ويجب أن يتم تطبيقهم أيضًا على فئة معينة من خلال UeAttributefor (classDefinedIn ، StringfieldName).
(2) تعديل المثال في 2.2 من خلال الاسم المستعار:
2.4. محول Xstream
أثناء عملية التطوير ، تحتاج أحيانًا إلى تحويل بعض الأنواع المخصصة. ما عليك سوى تنفيذ واجهة المحول واتصل بأسلوب registerConverter () لـ Xstream لتسجيل المحول.
2.5. التعليق التوضيحي Xstream
(1) التعليقات التوضيحية المشتركة لـ Xstream هي كما يلي:
(2) الاستخدام
XstreamxStream = newxStream (newDomDriver ()) ؛
هناك طريقتان لتحميل الكائنات:
①method 1:
xstream.processannotations (aaa.class) ؛
xstream.processannotations (BBB.Class) ؛
② الطريقة 2:
xstream.autodetectannotations (صواب) ؛ // تحميل التلقائي الفاصوليا المشروحة وأيضا ذاكرة التخزين المؤقت للكائن المشروح.
2.6. الكائنات المتدفقة
(1) يوفر Xstream تطبيقات بديلة لـ ObjectInputStream و ObjectOutputStream ، مما يسمح بتسلسل XML أو عمليات التخلص في شكل تدفقات الكائنات. السابق هو XML قراءة من قبل محلل XML المستند إلى DOM ، هنا يجب أن نستخدم طريقة الدفق من أجل التحليل.
الأمثلة على النحو التالي:
(2) الفرق بين استخدام PrettyWriter و CompactWriter هو أن PrettyWriter سوف يقوم بتنسيق XML الذي تم إنشاؤه ، في حين أن CompactWriter سوف يضغط XML تم إنشاؤه.
2.7. واجهة برمجة تطبيقات الثبات
(1) يوفر Xstream طريقة بسيطة لاستمرار الكائنات في المجموعة في ملفات ، مثل: XmlArrayList ، XMLSET ، XMLMAP ، إلخ.
(2) قبل إنشاء مجموعة ، تحتاج أيضًا إلى تحديد استراتيجية الثبات.
2.8. التعامل مع JSON
(1) لدى XML موضع لا يتزعزع في WebService ، ولكن في معظم تطبيقات الويب ، لا تزال JSON خفيفة الوزن تستخدم كتنسيق تبادل البيانات.
(2) يوفر Xstream jettisonmappedxmldriver و jsonhierarchicalstreamdriver لإكمال تحويل كائنات Java و JSON.
الأمثلة على النحو التالي:
(3) الفرق بين jettisonmappedxmldriver و jsonhierarchicalstreamdriver:
jettisonmappedxmldriver يولد JSON مضغوط ، بينما Jsonhierarchicalstreamdriver يولد تنسيق JSON.
② إذا كنت ترغب في تحويل JSON إلى كائن ، فيمكنك فقط استخدام jettisonmappedxmldriver.
3. مشاريع O/XMPAPP Open Source الشائعة الأخرى
مقارنة jaxb ، xmlbeans ، cstor ، jibx:
4. التكامل مع springoxm
4.1. نظرة عامة على Springoxm
(1) قام SpringoxM بإجراء تجريد موحد وتغليف لإطار عمل O/XMapping السائد. Marshaller و Unmarshaller هما واجهتان أساسيتان لـ Springoxm. يتم استخدام Marshaller لتحويل الكائنات إلى XML ، ويتم استخدام Unmarshaller لتحويل XML إلى كائنات.
(2) أغلفة مكون O/XMAPPENT هي كما يلي:
4.2. تكوين في الربيع
(1) مثيل تكوين XstreamMarshaller:
5. ملخص
(1) يمكن تلخيص ربط بيانات XML لتطبيقات Java إلى طريقتين:
قم بإنشاء رمز لغة Java (مثل JaxB و Xmlbeans و Castor) استنادًا إلى مستندات XML.
استخدم شكلًا من أشكال رسم الخرائط ، أي ، قم بتعيين كيفية ارتباط فئات Java بـ XML (مثل Xstream ، Castor ، Jibx).
(2) مقارنة 2 طريقتين:
باستخدام بنية مستند مستقر محددة بواسطة المخطط أو DTD ، والهيكل مناسب لاحتياجات التطبيق ، قد تكون طريقة توليد الكود هي الخيار الأفضل.
إذا كنت تستخدم فئة Java موجودة ، أو إذا كنت ترغب في استخدام بنية فئة تعكس استخدام التطبيق للبيانات ، بدلاً من بنية XML ، فإن طريقة التعيين هي الخيار الأفضل.
لخص
ما سبق هو كل شيء عن الربيع باستخدام OXM لتحليل رسم الخرائط XML. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!