XML ma'lumotlarini bog'lash - XML data binding - Wikipedia

XML ma'lumotlarini bog'lash ma'lumotni an .da ifodalash vositasiga ishora qiladi XML sifatida hujjat biznes ob'ekti kompyuter xotirasida. Bu imkon beradi ilovalar yordamida emas, balki XML-dagi ma'lumotlarga ob'ektdan kirish uchun DOM yoki SAX ma'lumotlarni to'g'ridan-to'g'ri XML-ning to'g'ridan-to'g'ri vakolatxonasidan olish uchun.

Tavsif

XML ma'lumotlar biriktiruvchisi buni avtomatik ravishda elementlari o'rtasida xaritalashni yaratish orqali amalga oshiradi XML sxemasi biz bog'lashni istagan hujjatning va a'zolar a sinf xotirada aks ettirish.

Ushbu jarayon XML hujjatni ob'ektga aylantirish uchun qo'llanilganda, u deyiladi bema'ni. Ob'ektni XML sifatida seriyalashtirish uchun teskari jarayon deyiladi marshalling.

Ma'lumotlarni bog'lashga yondashuvlarni quyidagicha ajratish mumkin:

  • XML sxemasiga asoslangan: Mavjud XML sxemasi asosida sxemaga mos sinflar hosil bo'ladi.
  • Sinf asosida: Seriallashtiriladigan sinflar to'plami asosida tegishli XML sxemasi yaratiladi.
  • Xaritaga asoslangan: Xaritalash tavsifi, odatda o'zi XML hujjati, mavjud bo'lgan XML sxemasini sinflar to'plamiga qanday aks ettirishini va aksincha tasvirlaydi.

Qiyinchiliklar

XML o'z navbatida ketma-ketligi va ob'ektlar (odatda) bunday bo'lmaganligi sababli, XML ma'lumotlarini bog'lash xaritalari ko'pincha XML hujjatidagi barcha ma'lumotlarni saqlashda qiynaladi. Xususan, shunga o'xshash ma'lumotlar Izohlar, Majburiy dastur tomonidan yaratilgan ob'ekt vakolatxonasida XML mavjudligiga havolalar va aka-ukalar tartibi saqlanib qolmasligi mumkin. Bu har doim ham shunday emas; ma'lumotlarning etarli darajada murakkab biriktiruvchilari XML hujjatidagi 100% ma'lumotlarni saqlashga qodir.

Xuddi shu tarzda, kompyuter xotirasidagi ob'ektlar o'z navbatida ketma-ket emasligi va boshqa ob'ektlarga havolalarni o'z ichiga olishi mumkin (shu jumladan o'z-o'ziga havola qilingan havolalar), XML ma'lumotlarini bog'lash xaritalari ko'pincha XML-ga o'rnatilganda ob'ekt haqidagi barcha ma'lumotlarni saqlab qolish qiyin kechadi.

Shu bilan bir qatorda

Ma'lumotlarni avtomatik ravishda bog'lashga muqobil yondashuv o'rniga qo'lda tayyorlangan narsalarga tayanadi XPath ma'lumotlarni XML-dan chiqaradigan iboralar. Ushbu yondashuv bir qator afzalliklarga ega. Birinchidan, ma'lumotni bog'lash kodi faqat XML daraxti tuzilishi haqida yaqin ma'lumotga ega bo'lishi kerak (masalan, topologiya, yorliq nomlari va boshqalar), ularni ishlab chiquvchilar XML ma'lumotlariga qarab aniqlashlari mumkin; XML sxemalari endi majburiy emas. Bundan tashqari, XPath dasturga tegishli ma'lumotlar elementlarini bog'lashga va boshqa barcha narsalarni filtrlashga imkon beradi, bu esa butun XML hujjatini butunlay bekor qilish uchun keraksiz ishlov berishdan qochadi. Ushbu yondashuvning kamchiliklari - bu ob'ekt modeli va XPath ifodalarini amalga oshirishda avtomatlashtirishning etishmasligi. Buning o'rniga dastur ishlab chiquvchilari ushbu artefaktlarni qo'lda yaratishlari kerak.

Umuman olganda ma'lumotlarni bog'lash

XML ma'lumotlarini bog'lashning kuchli tomonlaridan biri bu qobiliyatdir o'chirish / ketma-ketlashtirish dasturlar, tillar va platformalardagi ob'ektlar. Siz tuzilgan moslamalarning vaqt qatorini yozilgan ma'lumotlar katalogidan tashlab qo'yishingiz mumkin C (dasturlash tili) o'rnatilgan protsessorda, uni qayta ishlash uchun tarmoq bo'ylab olib boring Perl va nihoyat ingl Oktava. Struktura va ma'lumotlar butun sayohat davomida izchil va izchil bo'lib qoladi va maxsus formatlash yoki tahlil qilish talab qilinmaydi. Bu faqat XML uchun xos emas. YAML Masalan, XML uchun ma'lumotni bog'laydigan kuchli alternativ sifatida paydo bo'ladi. JSON (bu YAMLning kichik to'plami sifatida qaralishi mumkin) ko'pincha engil yoki cheklangan dasturlarga mos keladi.

XML ma'lumotlarini bog'laydigan ramkalar

IsmDasturlash tiliLitsenziyaBirinchi chiqishOxirgi barqaror chiqishXSD-dan kod yaratishMaxsus xaritalashEslatma
Apache Commons BetwixtJavaApache2003 yil 28 yanvar (2003-01-28)0.8Noma'lumNoma'lumDormant. XML sxemasini ta'riflashni talab qilmasdan ob'ektlarni XML-ga seriyalashtiradi
Apache XMLBeansJavaApache litsenziyasi 2.03.1.0, 2019 yil 26 mart (2019-03-26)HaNoma'lum
KastorJavaApache 2.01.4.1, 2016 yil 15-may (2016-05-15)Noma'lumNoma'lumOldingi versiyalar Java-to-SQL-ga qat'iylikni qo'llab-quvvatladi, ammo keyinchalik bu alohida loyihada saqlanib qoldi
CodeSynthesis XSDC ++GNU GPL va mulkiy4.0.0, 2014 yil 22-iyul (2014-07-22)Noma'lumNoma'lumSAX yoki daraxtga o'xshash xaritalash bilan C ++ sinflariga
gSOAPC va C ++GNU GPL va mulkiy2000 yil 8-dekabr; 19 yil oldin (2000-12-08)2.8.94, 17 oktyabr, 2019 yil (2019-10-17)HaHaXML sxemasini, WSDL va SOAP-ni qo'llab-quvvatlaydi; C / C ++ ma'lumotlarini XML-ga seriyalash uchun XML sxemalari talab qilinmaydi; XML sxemalari turlarini C / C ++ turlariga tip xaritalash fayli orqali va C / C ++ turlaridan mos keladigan XML sxemalari turlariga manba kodlari izohi bo'yicha maxsus xaritalash
XML majburiyligi uchun Java arxitekturasi (JAXB)Java?HaHa
JiBXJavaBSD litsenziyasi1.2.6, 2015 yil 1-yanvar (2015-01-01)HaHaBayt kodini boshqarish orqali sinflarni XML sxemalariga xaritalar
OddiyJavaApache 2.02.7.1, 2017 yil 9-fevral (2017-02-09)Yo'qHa
System.Xml.SerializationC #?HaYo'q.NET ramkasining bir qismi XML ma'lumotlarini bog'lash sinflarini o'z ichiga oladi; o'z ichiga oladi xsd.exe XSD sxemasidan sinflar yaratish vositasi
xmlbeansxxC ++Apache 2.00.9.1, 2008 yil 1-aprel (2008-04-01)Noma'lumNoma'lumC ++ porti Apache XMLBeans
XStreamJavaBSD - uslub litsenziyasi2004 yil 1-yanvar; 16 yil oldin (2004-01-01)1.4.10, 2017 yil 23-may (2017-05-23)Noma'lumNoma'lumShuningdek, JSON-ga ketma-ketlashtirishga qodir
ZevsJava?3.5 beta, 2002 yil 16-avgust (2002-08-16)Noma'lumNoma'lum

Shuningdek qarang

Adabiyotlar

Tashqi havolalar