ما هي مكتبة Java XML التي توصي بها(لاستبدال dom4j)؟



(8)

أستخدم XStream ، وهي مكتبة بسيطة لإجراء تسلسل الكائنات إلى XML والعودة مرة أخرى.

يمكن أن يكون هذا annotation-driven بالحواسب (مثل JAXB) ، ولكنه يتضمن واجهة برمجة تطبيقات بسيطة جدًا وسهلة الاستخدام ويمكنك حتى إنشاء JSON.

أنا أبحث عن شيء من هذا القبيل dom4j ، ولكن من دون الثآليل DOM4J ، مثل وثائق سيئة أو مفقودة ووضع التنمية المتوقفة على ما يبدو.

الخلفية: لقد كنت أستخدم dom4j وأدعو advocating ، لكن لا أشعر بأنك على حق تمامًا لأنني أعرف أن المكتبة بعيدة عن المثالية (مثال: انظر كيف يتم توثيق الطرق في فئة Stylesheet المتعلقة بـ XSLT ؛ ما الذي سوف تمرره للتشغيل) ) كمعلمة String mode ؟)

المتطلبات: يجب أن تجعل المكتبة معالجة XML الأساسية أسهل مما هي عليه عند using JDK ( org.w3c.dom وحزم org.w3c.dom ). مثل هذه الامور:

  • اقرأ مستند XML (من ملف أو سلسلة) في كائن ، واجتاز DOM بسهولة ، وقم بإجراء استعلامات XPath وقم بتشغيل XSLT مقابله.
  • إنشاء مستند XML في تعليمات Java البرمجية وإضافة عناصر وسمات وبيانات ، وأخيرًا كتابة المستند في ملف أو سلسلة.

أنا حقا أحب ما prom4j وعود ، في الواقع: " سهلة الاستخدام ، مكتبة مفتوحة المصدر للعمل مع XML ، XPath و XSLT [...] مع الدعم الكامل لـ DOM ، SAX و JAXP. " ويزعم dom4j 2.0 لإصلاح كل شيء : الاستفادة الكاملة من جافا 5 وإضافة الوثائق المفقودة. لكن لسوء الحظ ، إذا نظرت عن قرب :

تحذير: dom4j 2.0 في مرحلة ما قبل ألفا. من المحتمل أنه لا يمكن تجميعها. في حالة أنه يمكن تجميعها بشكل عشوائي فمن المرجح أنه لا يمكن تشغيلها. في حالة تشغيله في بعض الأحيان يمكن أن تنفجر فجأة. إذا كنت تريد استخدام dom4j ، فأنت تريد الإصدار 1.6.1. هل حقا.

... وقال موقع الويب هذا لفترة طويلة . لذلك هل هناك بديل جيد ل dom4j؟ يرجى تقديم بعض التبرير لمكتبتك المفضلة ، بدلاً من مجرد إغراق الأسماء والروابط. :-)


Answer #1

أنا أستخدم أحيانًا Jericho ، وهو محلل HTML في المقام الأول ، ولكن يمكن تحليل أي بنية تشبه XML.

وبالطبع ، لا يتم ذلك إلا لأبسط عمليات XML ، مثل العثور على العلامات بالاسم المعين ، والتكرار من خلال الهيكل ، واستبدال العلامات وسماتها ، ولكن أليس هذا هو أكثر حالات الاستخدام؟


Answer #2

سأضيف إلى الإجابة المضمنة من قبلkdgregory بالقول لماذا لا JAXB؟

من خلال بعض التعليقات التوضيحية يسهل إنشاء نماذج لمعظم مستندات XML بسهولة. أعني من المحتمل أن تقوم بتحليل الأشياء ووضعها في كائن صحيح؟

بنيت JAXB 2.0 إلى JDK 1.6 وعلى خلاف العديد من مكتبات javax البينية الأخرى هذه واحدة جيدة (Kohusuke عملت عليها لذا أنت تعرف جيدتها).


Answer #3

في مشروع أخير اضطررت إلى القيام ببعض تحليل XML ، وانتهى بي الأمر باستخدام Simple Framework ، الذي أوصى به أحد الزملاء.

كنت سعيدا جدا في النهاية. ويستخدم أسلوبًا يستند إلى التعليقات التوضيحية لتعيين عناصر وسمات XML إلى فئات Java وحقولها.

<example>
  <a>
    <b>
      <x>foo</x>
    </b>
    <b>
      <y>bar</y>
    </b>
  </a>
</example>

رمز جافا المقابل:

@Root
public class Example {

   @Path("a/b[1]")
   @Element
   private String x;

   @Path("a/b[2]")
   @Element
   private String y;
}

الأمر مختلف تمامًا عن dom4j أو XOM. أنت تتفادى كتابة شفرة معالجة XML السخيفة ، ولكن في البداية ستضرب رأسك بالحائط لفترة من الوقت محاولا الحصول على الشروح الصحيحة.

(لقد كان أنا الذي طرح هذا السؤال منذ 4 سنوات. في حين يبدو XOM بديلة و محبوبه dom4j استبدال ، لم أكن قد حان لاعتناقها تماما. من الغريب أن أحدا لم يذكر الإطار البسيط هنا. قررت أن أصلح ذلك ، كما كنت ربما استخدامها مرة أخرى.)


Answer #4

كنت دائما أحب jdom . لقد تمت كتابته ليكون أكثر سهولة من تحليل DOM (ويبدو أن تحليل SAX يبدو أخرقًا على أية حال).

من بيان المهمة:

لا يوجد سبب مقنع لوجود واجهة برمجة تطبيقات جافا لمعالجة XML بحيث تكون معقدة ، أو صعبة ، أو غير محدودة ، أو ألم في الرقبة. JDOMTM هو كل من Java-centric و Java-optimized. انها تتصرف مثل جافا ، انها تستخدم مجموعات جافا ، هو تماما API الطبيعية لمطوري جافا الحالي ، ويوفر نقطة دخول منخفضة التكلفة لاستخدام XML.

هذا إلى حد كبير تجربتي - الملاحة بديهية إلى حد ما من أشجار العقدة.


Answer #5

لبناء توثيق XML ، أقترح xmlenc . يتم استخدامه في cassandra .



Answer #7

واحدة بنيت في JDK ... مع بعض الإضافات.

نعم ، إنه مؤلم للاستخدام: تم تصميمه على غرار مواصفات W3C التي تم تصميمها بوضوح من قبل اللجنة. ومع ذلك ، فإنه يتوفر في أي مكان ، وإذا كنت تستقر عليه لا تصادف في "أنا أحب Dom4J ،" "أنا أحب JUD ،" "أنا أحب StringBuffer" الحجج التي تأتي من مكتبات الطرف الثالث. خاصة وأن مثل هذه الحجج يمكن أن تتحول إلى أجزاء مختلفة من الكود باستخدام مكتبات مختلفة ...

ومع ذلك ، وكما قلت ، فإنني أقوم بتحسين بعض الشيء: إن مكتبة XML العملية هي مجموعة من فئات المرافق التي تسهّل العمل مع DOM . بخلاف المجمع XPath ، هناك شيء معقدة هنا ، مجرد مجموعة من الروتينات التي وجدت نفسي إعادة كتابة لكل وظيفة.





dom4j