سؤال

ما هو نوع المكتبات المفتوحة المصدر متوفرة لتحويل XML إلى كائن قيمة Java؟

في .NET، هناك طريقة للقيام بذلك بسهولة مع تسلسل XML والسمات. وأود أن أتصور هناك بعض الموازية في جافا. أعرف كيف أفعل هذا مع محلل دوم أو ساكس، لكنني كنت أتساءل عما إذا كانت هناك طريقة أسهل.

لدي تنسيق XML محدد مسبقا يبدو مثل هذا.

<FOOBAR_DATA>
  <ID>12345</ID>
  <MESSAGE>Hello World!</MESSAGE>
  <DATE>22/04/2009</DATE>
  <NAME>Fred</NAME>
</FOOBAR_DATA>

في .NET، يمكنني أن أفعل شيئا مثل هذا لربط كائنتي بالبيانات.

using System;
using System.Xml.Serialization;

    namespace FooBarData.Serialization
    {
      [XmlRoot("FOOBAR_DATA")]
      public class FooBarData
  {
    private int _ID = 0;
    [XmlElement("ID")]
    public int ID
    {
      get { return this._ID; }
      set { this._ID = value; }
    }

    private string _Message = "";
    [XmlElement("MESSAGE")]
    public string Message
    {
      get { return this._Message; }
      set { this._Message = value; }
    }

    private string _Name = "";
    [XmlElement("NAME")]
    public string Name
    {
      get { return this._Name; }
      set { this._Name = value; }
    }

    private Date _Date;
    [XmlElement("DATE")]
    public Date Date
    {
      get { return this._Date; }
      set { this._Date= value; }
    }

    public FooBarData()
    {
    }
  }
}

كنت أتساءل عما إذا كانت هناك طريقة باستخدام التعليقات التوضيحية، على غرار .NET أو ربما السبات، من شأنها أن تسمح لي بربط كائن القيمة الخاصة بي إلى XML مسبقا.

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

المحلول

انا يعجبني xstream الكثير، خاصة مقارنة مع Jaxb - على عكس Jaxb، لا يحتاجك XStream إلى أن يكون لديك XSD. إنه لأمر رائع إذا كان لديك حفنة من الفصول الدراسية التي تريد تسلسلها وتغاضيها إلى XML، دون الحاجة الثقيلة من الحاجة إلى إنشاء XSD، تشغيل JAXC لإنشاء فئات من هذا المخطط، إلخ. Xstream من ناحية أخرى هو جميل وزن خفيف.

(بالطبع، هناك عدة مرات حيث يكون Jaxb مناسبا، مثل عندما يكون لديك XSD موجود مسبقا يناسب المناسبة ...)

نصائح أخرى

jaxb. يسمح لك بتحويل ملف مخطط XML (XSD) إلى مجموعة من فئات Java. قد يكون هذا أكثر "منظومة" من XMLEncoder/Serializable اقترب من أن أندي (ممتاز، بالمناسبة) الإجابة يوفر.

جافا لديه XMLENCODER. قد تكون قادرا على استخدامها لتسلسل كائن إلى XML. الشرط الوحيد هو أن جسمك ينفذ "serializable".

إليك مثال:

http://www.developer.com/java/web/article.php/1377961.

jibx. هو خيار آخر.

لمزيد من الآراء حول ملزمة بيانات Java-To-XML، انظر تسلسل XML في جافا؟

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