أولاً ، حدد اثنين من الفئتين الفئتين و classb لمثلات مثال لاحقة
نسخة الكود كما يلي:
حزمة Cn.LzRabbit ؛
الفئة العامة classa {
Private Int Classaid ؛
سلسلة خاصة classaname ؛
classb classb الخاص ؛
الجمهور int getClassaid () {
عودة المصنف ؛
}
public void setClassaid (int classaid) {
this.classaid = classaid ؛
}
السلسلة العامة getClassAname () {
إرجاع اسم ClassAname ؛
}
public void setClassAname (String classaname) {
this.classaname = classaname ؛
}
classb العامة getClassb () {
إرجاع classb ؛
}
public void setClassb (classb classb) {
this.classb = classb ؛
}
}
فئة
نسخة الكود كما يلي:
حزمة Cn.LzRabbit ؛
الفئة العامة classb {
Private int classbid ؛
سلسلة خاصة classBname ؛
الجمهور int getClassBid () {
إرجاع classbid.
}
public void setClassBid (int classbid) {
this.classbid = classBid ؛
}
السلسلة العامة getClassBname () {
إرجاع classbname ؛
}
public void setClassBname (سلسلة classBname) {
this.classBname = classBname ؛
}
}
classb
xmlutil للتسلسل
نسخة الكود كما يلي:
حزمة Cn.LzRabbit ؛
استيراد java.io.stringReader ؛
استيراد java.io.stringWriter ؛
استيراد javax.xml.bind.*؛
الفئة العامة Xmlutil {
السلسلة الثابتة العامة Toxml (Object OBJ) {
يحاول {
سياق jaxbContext = jaxbcontext.newinstance (obj.getClass ()) ؛
Marshaller Marshaller = context.createmarshaller () ؛
Marshaller.SetProperty (Marshaller.jaxb_encoding ، "UTF-8") ؛ // // تنسيق الترميز
Marshaller.SetProperty (Marshaller.jaxb_formatted_output ، صواب) ؛ // ما إذا كنت تريد تنسيق سلسلة XML التي تم إنشاؤها
Marshaller.SetProperty (Marshaller.jaxb_fragment ، false) ؛ // ما إذا كان يجب حذف معلومات إعلان رأس XM
StringWriter Writer = new StringWriter () ؛
Marshaller.Marshal (OBJ ، كاتب) ؛
عودة الكاتب. toString () ؛
} catch (استثناء e) {
رمي new RunTimeException (e) ؛
}
}
suppressWarnings ("غير محدد")
ثابت عام <T> t من xml (سلسلة XML ، فئة <T> ValueType) {
يحاول {
سياق jaxbcontext = jaxbcontext.newinstance (valuetype) ؛
unmarshaller unmarshaller = context.createNmarshaller () ؛
return (t) unmarshaller.unmarshal (New StringReader (XML)) ؛
} catch (استثناء e) {
رمي new RunTimeException (E.GetMessage ()) ؛
}
}
}
xmlutil
المكالمة كما يلي:
نسخة الكود كما يلي:
حزمة Cn.LzRabbit ؛
الطبقة العامة mainrun {
/**
* param args
*/
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
classb classb = new classb () ؛
classb.setClassBid (22) ؛
classb.setClassBname ("B2") ؛
classa classa = new classa () ؛
classa.setClassaid (11) ؛
classa.setClassAname ("A1") ؛
classa.setClassB (classB) ؛
system.out.println (xmlutil.toxml (classa)) ؛
}
}
مينرون
نتيجة الإخراج على النحو التالي:
نسخة الكود كما يلي:
<؟
<Classa>
<slassaid> 11 </lassaid>
<ClassAname> A1 </lascaname>
<SlassB>
<SlassBid> 22 </slassBid>
<ClassBname> B2 </slassBname>
</classb>
</classa>
فيما يلي بعض النقاط التي يجب ملاحظتها
1. أضف شرح التعليق التوضيحي @xmlrootelement إلى الفئة المسلسل ، وإلا سيتم الإبلاغ عن خطأ (موجه الخطأ واضح للغاية ، لذلك لن نشره هنا)
2jaxb يسلسلات getters والمستقبين افتراضيًا عند تسلسل XML ، وينبغي أن يظهروا في الأزواج قبل أن يتم تسلسلها.
3 أسماء السمات. ما تحتاج إلى الانتباه إلى هنا هو أن @xmlelement يمكن وضعه على getter أو setter ، ولكن يمكن وضع واحد فقط ، مما يعني أنه لا يمكن استخدام التعليق التوضيحي @xmlelement على getter و setter في نفس الوقت
4how للتحكم في اسم عقدة الجذر؟
استخدم @xmlrootelement لتحديد سمة الاسم ، مثل xmlrootelement (name = "classa")
5 كيفية إضافة مساحة اسم لتحديد سمة مساحة الاسم باستخدام @xmlrootelement (مساحة الاسم = "cn.lzRabbit")
6 كيفية التحكم بدقة في كل اسم سمة
سيؤدي تحويل jaxb تلقائيًا إلى ظهور أسماء السمات غير المتوقعة.
7 كيفية تنفيذ التسلسل باستخدام حقول الحقل بدلاً من المستقلين والغديين
إضافة التعليق التوضيحي @xmlaccessortype ( بدلا من تعيين @xmlelement (name = "")
فيما يلي مثال رمز باستخدام التعليق التوضيحي أعلاه
نسخة الكود كما يلي:
xmlrootelement (مساحة الاسم = "cn.lzRabbit")
xmlaccessortype (xmlaccesstype.field)
الفئة العامة classa {
Private Int Classaid ؛
xmlelement (name = "classaname")
سلسلة خاصة classaname ؛
classb classb الخاص ؛
الجمهور int getClassaid () {
عودة المصنف ؛
}
public void setClassaid (int classaid) {
this.classaid = classaid ؛
}
السلسلة العامة getClassAname () {
إرجاع اسم ClassAname ؛
}
public void setClassAname (String classaname) {
this.classaname = classaname ؛
}
classb العامة getClassb () {
إرجاع classb ؛
}
public void setClassb (classb classb) {
this.classb = classb ؛
}
}
xmlrootelement
xmlaccessortype (xmlaccesstype.field)
الفئة العامة classb {
Private int classbid ؛
سلسلة خاصة classBname ؛
الجمهور int getClassBid () {
إرجاع classbid.
}
public void setClassBid (int classbid) {
this.classbid = classBid ؛
}
السلسلة العامة getClassBname () {
إرجاع classbname ؛
}
public void setClassBname (سلسلة classBname) {
this.classBname = classBname ؛
}
}
إخراج XML هو
نسخة الكود كما يلي:
<؟
<ns2: classa xmlns: ns2 = "cn.lzRabbit">
<slassaid> 11 </lassaid>
<ClassAname> A1 </lascaname>
<SlassB>
<SlassBid> 22 </slassBid>
<ClassBname> B2 </slassBname>
</classb>
</ns2: classa>
ملاحظة: إليك بعض الأدوات عبر الإنترنت للرجوع إليها:
أداة تحويل XML/JSON عبر الإنترنت:
http://tools.vevb.com/code/xmljson
تنسيق XML عبر الإنترنت/ضغط XML عبر الإنترنت:
http://tools.vevb.com/code/xmlformat
أدوات الضغط/التنسيق عبر الإنترنت XML:
http://tools.vevb.com/code/xml_format_compress