سؤال

ما الذي تستخدمه لربط XML بـ Java؟تعد JAXB وCastor وXMLBeans بعضًا من الخيارات المتاحة.المقارنات التي رأيتها عمرها ثلاث أو أربع سنوات.أنا منفتح على الاقتراحات الأخرى.يعد تنظيم/إلغاء تنظيم الأداء وسهولة الاستخدام أمرًا ذا أهمية خاصة.

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

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

المحلول

JiBX . سابقا كنت الخروع XML ، ولكن ثبت JiBX أن يكون أفضل بكثير، لا سيما من حيث الأداء (ميناء على التوالي من بعض رمز التطبيق من الخروع XML إلى JiBX جعلت من 9X أسرع). كما أنني وجدت شكل رسم الخرائط لJiBX أن تكون أكثر أناقة من والخروع.

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

نصائح أخرى

إذا كنت تريد اتخاذ قرار مستنير، فيجب أن تكون واضحًا بشأن سبب قيامك بالترجمة بين كائنات XML وjava.والسبب هو أن التقنيات المختلفة في هذا المجال تحاول حل مشكلات مختلفة.تنقسم الأدوات المختلفة إلى فئتين:

  1. ربط بيانات XML - يشير إلى عملية تمثيل المعلومات في مستند XML ككائن في ذاكرة الكمبيوتر.عادةً ما يعني هذا تحديد XSD وإنشاء مكافئ لكود مصدر Java.يعد التفاعل بين اللغات المختلفة أولوية قصوى (وبالتالي استخدام XSD) - وهو الأكثر شيوعًا لتنفيذ خدمات الويب المستندة إلى SOAP.
  2. تسلسل XML - يشير إلى كتابة رسم بياني للكائنات الموجودة في الذاكرة إلى دفق، بحيث يمكن إعادة تشكيلها في مكان ما أو في وقت آخر.تكتب فئات جافا باليد؛تمثيل XML له أهمية ثانوية.كما أن الحاجة إلى الأداء غالبًا ما تكون أكبر وتكون الحاجة إلى التشغيل التفاعلي مع اللغات الأخرى مثل .net أقل في كثير من الأحيان.

بالنسبة لتسلسل XML، من الصعب التغلب على Xstream.JAXB هو المعيار لربط XML.

في كلتا الحالتين، إذا كنت تستخدم J2EE، فستحتاج إلى إيلاء اهتمام دقيق للفئات التي تم استردادها من JPA نظرًا لأن وكلاء الفئات وأنواع المجموعات المحددة للاستمرارية يمكن أن تربك أدوات الربط/التسلسل.

إذا كان لديك XSD لـ XML، ولا تحتاج إلى ربط البيانات بمجموعة موجودة من الفئات، فأنا أحب ذلك حقًا XMLBeans.ببساطة إنه يعمل بهذا الشكل:

  • ترجمة XSD
  • استخدم فئات Java التي تم إنشاؤها لقراءة/كتابة المستندات المطابقة لهذا المخطط

يعد ربط مستند XML بالفئات التي تم إنشاؤها أمرًا بسيطًا مثل:

EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile); 

ونحن نستخدم القناة Xstream . التنظيم / unmarshalling تافهة. انظر على تعليمي للحصول على أمثلة.

Jibx ما يستخدم هنا. فهو سريع جدا، ولكن يمكن الارتباطات تكون صعبة بعض الشيء. ومع ذلك، من المفيد وخاصة إذا كان لديك مخططات XML يصف كائنات المجال الخاص بك، كما هو حقا خرائط جيدا لXSD (هناك حتى أداة بيتا XSD2Jibx التي يمكن أن تتخذ XSDs وإنشاء فصول نطاق كعب وتعيينات، والتي يمكن بعد ذلك اتخاذ واقناع ل تناسب نموذج المجال الموجودة لديك).

وانها تعالج بايت كود، لذلك يجب تشغيل بعد تجميع الأولي من ملفات جافا. الطبقة. يمكنك استخدام البرنامج المساعد مخضرم لذلك، أو مجرد استخدامه مباشرة (البرنامج المساعد الكسوف لا يبدو أن العمل بالنسبة لي).

ولقد استعملت JAXB بدرجات متفاوتة من النجاح. في ذلك الوقت (بضعة سنوات) كانت الوثائق العامة باهتة وثائق استخدام الأساسية (بما في ذلك حيث لتحميل تطبيقات) كان من الصعب العثور على أو تغييره.

ومحلل التي كتبت فئات Java كان جيدا مع تفاوت ضئيل ضد XSD الأصلي (على الرغم من أنني أعتقد أنه لديه مشاكل دعم عناصر XML المجردة).

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

ولقد استخدمت الخروع منذ 7 سنوات - انها عملت بشكل جيد إلى حد ما. تدس المستخدمة. ليس هناك الكثير من الخيارات في ذلك الوقت.

في المشاريع الحالية، لقد استعملت
1) JAXB - معايير تستند، تنفيذ المرجعي المتاحة، سطر الأوامر والأدوات النمل المتاحة. أحدث نسخة - 2.1.8 يحتاج جافا 5+
. 2) القناة Xstream - لunmarshalling الصابون - يحتاج جافا 5+. ليست سريعة كما ومتوافقة مع المعايير كما JAXB الأخير.

وBR،
~ A

وXmlBeans هو خيار جيد خاصة إذا كنت قد "كسر" ملفات XSD / WSDL.

ودون ذكر

<اقتباس فقرة>   

وEmployeesDocument empDoc = EmployeesDocument.Factory.parse (xmlFile)؛

و.. ولكن يمكن أيضا أن تأخذ عقدة، أو ملف، أو مجرد عن أي مصدر.

ولا القتال مع النطاقات، تعبر إلى الكائن الذي تريد unmarshall، وFactory.parse ذلك.

وأتمنى أنني قد وجدت عليه قبل 2 أسابيع.

ونحن نستخدم زيت الخروع. أنها تناسب احتياجاتنا بشكل جيد إلى حد ما.

كنت أتساءل بالضبط نفس السؤال، وأخيراً وجدت اختبارات الأداء هذه التي أجرتها شركة IBM. http://www.ibm.com/developerworks/library/x-databdopt2/.أعتقد أن JiBX هو خياري، هيهي.

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