ربط جاكرتا XML

إطار عمل Jakarta XML Binding ( JAXB ؛ المعروف سابقًا باسم Java Architecture for XML Binding ) هو إطار عمل برمجي يمكّن مطوري Java EE من ربط فئات Java بتمثيلات XML . يوفر JAXB ميزتين رئيسيتين: القدرة على تحويل كائنات Java إلى XML، والعكس، أي تحويل XML مرة أخرى إلى كائنات Java. بعبارة أخرى، يسمح JAXB بتخزين البيانات واسترجاعها في الذاكرة بأي تنسيق XML، دون الحاجة إلى تنفيذ مجموعة محددة من إجراءات تحميل وحفظ XML لبنية فئات البرنامج. وهو مشابه xsd.exeلـ XmlSerializer.NET Framework .

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

JAXB هي إحدى واجهات برمجة التطبيقات (APIs) في منصة Jakarta EE (المعروفة سابقًا باسم Java EE)، وهي جزء من حزمة تطوير خدمات الويب Java (JWSDP)، وإحدى الركائز الأساسية لـ WSIT . وكانت أيضًا جزءًا من منصة Java SE (في الإصدارات من Java SE 6 إلى 10). ابتداءً من Java SE 11، تم حذف JAXB. للمزيد من التفاصيل، راجع JEP 320 .

تم إصدار JAXB 1.0 في عام 2003، بعد أن تم تطويره في إطار عملية مجتمع جافا تحت اسم JSR 31. [ 1 ] وفي عام 2006 تم إصدار JAXB 2.0 بموجب JSR 222 وتم إصدار الإصدار الثاني للصيانة في ديسمبر 2009. [ 2 ] كانت التطبيقات المرجعية لهذه المواصفات متاحة بموجب ترخيص CDDL مفتوح المصدر على java.net .

الاستخدام

يمكن استخدام أداة " xjc " لتحويل مخطط XML وأنواع ملفات المخططات الأخرى (ابتداءً من Java 1.6، يدعم RELAX NG وXML DTD و WSDL تجريبيًا) إلى تمثيلات فئوية. [ 3 ] تُعلَّم الفئات باستخدام التعليقات التوضيحية من مساحة اسم javax.xml.bind.annotation.* ، على سبيل المثال، @XmlRootElement و @XmlElement . تُمثَّل تسلسلات قوائم XML بسمات من النوع java.util.List . تُنشأ أدوات التحويل (Marshallers) وأدوات فك التحويل (Unmarshallers) من خلال مثيل من JAXBContext.

بالإضافة إلى ذلك، يتضمن JAXB أداة " schemagen " التي يمكنها بشكل أساسي القيام بعكس " xjc "، وإنشاء مخطط XML من مجموعة من الفئات المشروحة.

ربط أنواع البيانات الافتراضية

يسرد الجدول أدناه عمليات الربط بين أنواع بيانات XML Schema (XSD) وأنواع بيانات Java في JAXB. [ 4 ]

نوع مخطط XMLنوع بيانات جافا
xsd:stringjava.lang.String
xsd:integerjava.math.BigInteger
xsd:positiveIntegerjava.math.BigInteger
xsd:intint
xsd:longlong
xsd:shortshort
xsd:decimaljava.math.BigDecimal
xsd:floatfloat
xsd:doubledouble
xsd:booleanboolean
xsd:bytebyte
xsd:QNamejavax.xml.namespace.QName
xsd:dateTimejavax.xml.datatype.XMLGregorianCalendar
xsd:base64Binarybyte[]
xsd:hexBinarybyte[]
xsd:unsignedIntlong
xsd:unsignedShortint
xsd:unsignedByteshort
xsd:unsignedLongjava.math.BigDecimal
xsd:timejavax.xml.datatype.XMLGregorianCalendar
xsd:datejavax.xml.datatype.XMLGregorianCalendar
xsd:gjavax.xml.datatype.XMLGregorianCalendar
xsd:anySimpleType[ 5 ]java.lang.Object
xsd:anySimpleType[ 6 ]java.lang.String
xsd:durationjavax.xml.datatype.Duration
xsd:NOTATIONjavax.xml.namespace.QName

الإصدارات

  • Java SE 9: JAXB 2.3.0 [ 7 ] (في الوحدة النمطية java.xml.bind؛ تم وضع علامة على هذه الوحدة النمطية بأنها مهملة [ 8 ] )
  • Java SE 8: JAXB 2.2.8 [ 9 ]
  • Java SE 7: JAXB 2.2.3 (JSR 222، إصدار الصيانة 2) [ 10 ]
  • جافا SE 6: JAXB 2.0 (JSR 222) [ 11 ]

انظر أيضاً

مراجع

  1. "JSRs: طلبات مواصفات جافا. JSR 31: مواصفات ربط بيانات XML" . تم الاطلاع عليه بتاريخ 15-02-2011 .
  2. "JSRs: طلبات مواصفات جافا. JSR 222: بنية جافا لربط XML (JAXB) 2.0" . تم الاطلاع عليه بتاريخ 15 فبراير 2011 .
  3. "xjc - بنية جافا لربط XML" . تم الاطلاع عليه بتاريخ 15-02-2011 .
  4. "استخدام ربط بيانات JAXB: تعيين أنواع البيانات القياسية" .
  5. لهذاxsd:elementالنوع
  6. لهذاxsd:attributeالنوع
  7. "أي JAXB RI مضمن في أي JDK؟ "
  8. "وحدة مهملة java.xml.bind" .
  9. "Jaxb 2.2.8 (JDK 8)" . مؤرشف من الأصل بتاريخ 12 مايو 2015. تم الاطلاع عليه بتاريخ 1 مارس 2015 .
  10. "Java SE 7: Java XML Technology Enhancements" . تم الاطلاع عليه بتاريخ 21-03-2012 .
  11. "Java SE 6: الميزات والتحسينات" . تم الاطلاع عليه بتاريخ 21-03-2012 .

مقالات