XML деректерін объектілерге байланыстыру және қолдану жолдары
XML data binding
XML дерек байланыстыру: XML құжаттардағы ақпаратты компьютер жадындағы бизнес-объектілерге айналдыру. DOM/SAX қажет емес, деректерге оңай қол жеткізіңіз!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
XML деректерді байлау – XML құжатындағы ақпаратты компьютер жадындағы бизнес-объект ретінде ұсыну тәсілі. Бұл қолданбаларға деректерді XML-дің тікелей көрінісінен DOM немесе SAX арқылы алудың орнына, объекті арқылы XML деректеріне қол жеткізуге мүмкіндік береді.
XML data binding refers to a means of representing information in an XML document as a business object in computer memory. This allows applications to access the data in the XML from the object, rather than using the DOM or SAX to retrieve the data from a direct representation of the XML itself.
Қиындықтар
XML құжатқа бағытталған формат болғандықтан және нысандар (әдетте) құжатқа бағытталмайды, қарапайым XML деректерін байланыстыру шамалаулары XML құжатындағы құрылымдық ақпараттың бір бөлігін назардан тыс қалдыруы мүмкін. Атап айтқанда, түсініктемелер, XML нысандарына сілтемелер және бауырлас элементтердің реті байланыстыру қолданбасы жасаған нысан өрнегінде сақталмауы мүмкін. Дегенмен, бұл әрқашан осылай бола бермейді; жеткілікті күшті XML деректерін байланыстыру құралдары XML құжатында сақталған ақпараттың 100% сақтай алады. Сол сияқты, компьютер жадындағы нысандар өздігінен тізбектелмейтіндіктен және басқа нысандарға сілтемелерді (оның ішінде өзіне сілтемелерді) қамтуы мүмкін болғандықтан, қарапайым XML деректерін байланыстыру схемалары нысанды XML-ге түрлендірген кезде оның барлық ақпаратын сақтауға қабілетсіз болуы мүмкін. Алайда, жеткілікті күшті деректерді байланыстыру құралдары жадыдағы нысандардың графтық құрылымын талдау арқылы, стандартты XML сілтеме атрибуттарын пайдаланып XML-де (циклдік) нысандар графының құрылымын түрлендіреді.
Since XML is a document oriented format and objects are (usually) not document oriented, simple XML data binding mappings may ignore some of the structural information embedded in an XML document. Specifically, information such as comments, XML entity references, and sibling order may not be preserved in the object representation created by the binding application. However, this is not always the case; sufficiently powerful XML data binding tools are capable of preserving 100% of the information stored in an XML document. Similarly, since objects residing in computer memory are not inherently sequentially stored, and may include links to other objects (including self referential links), simple XML data binding mappings may not be capable of preserving all the information about an object when it is marshalled to XML. However, sufficiently powerful data binding tools perform graph structure analysis on objects residing in memory to marshall (cyclic) object graph structures in XML by utilizing standard XML reference attributes.
Баламалар
Автоматты деректерді байлаудың баламалы тәсілі XML деректерінен деректерді шығару үшін қолмен жасалған XPath өрнектеріне сүйенеді. Бұл тәсілдің бірнеше артықшылықтары бар, бірақ кемшіліктері де бар. Біріншіден, бұл тәсілге XML ағашы құрылымы туралы негізгі білім ғана қажет (мысалы, топология, тегтердің атаулары сияқты), оны әзірлеушілер XML деректерін қарап анықтай алады. Бұдан әрі, XPath қолданбаға қажетті деректерді байлауға және қалғандарынан арылуға мүмкіндік береді, соның арқасында толыққанды XML құжатын жою үшін қажетті артық өңдеуден аулақ боласыз. Бұл тәсілдің кемшілігі – объектілік модельді және XPath өрнектерін жүзеге асыруда автоматтандырудың жоқтығы. Оның орнына, қолданба әзірлеушілер осы элементтерді қолмен жасауы керек, бұл уақытты көп алады, қателерге әкелуі мүмкін және XML схемалары мен XML мазмұны модельдері жаңартылғанда қолданбаны күтіп ұстауды қиындатады. Тағы бір кемшілік – XML схемасын тексерудің болмауы, XML деректерді байлау әдетте оларды жою кезінде автоматты түрде жүзеге асырады. Схеманың дұрыстығы, әдетте, қауіпсіз қолданбаларда міндетті болып табылады.
An alternative approach to automatic data binding relies instead on hand crafted XPath expressions that extract data from XML. This approach has some benefits but also has some drawbacks. First, the approach only needs proximate knowledge (e. g., topology, tag names, etc.) of the XML tree structure, which developers can determine by looking at the XML data. Furthermore, XPath allows the application to bind the relevant data items and filter out everything else, avoiding the unnecessary processing that would be required to completely unmarshall the entire XML document. The drawback of this approach is the lack of automation in implementing the object model and XPath expressions. Instead, the application developers have to create these artifacts manually, which is time consuming, potentially error prone, and hampers application maintenance when XML schemas and XML content models are updated. Another drawback is the lack of XML schema verification, which XML data bindings typically apply automatically during unmarshalling. Schema validity is typically required in secure applications.
Деректерді жалпыға бірдей беру
XML деректерді байлаудың күшті жақтарының бірі – бағдарламалар, тілдер және платформалар бойынша объектілерді десериализациялау мүмкіндігі. Сіз C (программалау тілі) тілінде жазылған деректер жинағыштан кіріктірілген процессорға құрылымды нысандардың уақыт тізбегін экспорттай аласыз, оны желі арқылы Perl-де өңдеуге әкеліп, соңында Octave-де визуализациялай аласыз. Құрылымы мен деректері жол бойы тұрақты және үйлесімді болып қалады, және ешқандай арнайы форматтар немесе талдау қажет емес. Бұл мүмкіндік XML-ге ғана тән емес. Мысалы, YAML XML-ге қарағанда қуатты деректерді байлаудың баламасы ретінде пайда болуда. JSON (YAML-дың ішкі жиыны ретінде қарастырылуы мүмкін) көбінесе жеңіл немесе шектеулі қолданбалар үшін қолайлы.
One of XML data binding's strengths is the ability to deserialize objects across programs, languages, and platforms. You can dump a time series of structured objects from a datalogger written in C (programming language) on an embedded processor, bring it across the network to process in Perl and finally visualize in Octave. The structure and the data remain consistent and coherent throughout the journey, and no custom formats or parsing is required. This is not unique to XML. YAML, for example, is emerging as a powerful data binding alternative to XML. JSON (which can be regarded as a subset of YAML) is often suitable for lightweight or restricted applications.
XML деректерін байлау жүйелері
Атауы Бағдарламалау тілі Лицензиясы Бірінші шығарылым Соңғы тұрақты шығарылым XSD-ден код жасау Жеке карталау Ескерту Apache Commons Betwixt Java 0.8 Тоқтатылған. Объектілерді XML форматына түрлендіреді, XML схемасының анықтамасы қажет емес Apache XMLBeans Java 5.1.1, Castor Java 1.4.1, Алдыңғы нұсқалары Java-дан SQL-ге қолдау көрсеткен, бірақ қазір бұл бөлек жобаға бөлінді CodeSynthesis XSD C++ және меншік 4.0.0, SAX немесе ағаш тәрізді C++ сыныптарына бейімдеу gSOAP C және C++ және меншік 2000 12 08 2.8.131, XML схемаларын, WSDL және SOAP-ты қолдайды; C/C++ деректерін XML-ге түрлендіру үшін XML схемалары міндетті емес; XML схемасы түрлерін C/C++ түрлеріне типтерді бейімдеу файлы арқылы және C/C++ түрлерінен үйлесімді XML схемасы түрлеріне код түсіндірмелері арқылы Java Architecture for XML Binding (JAXB) Java ? JiBX Java 1.2.6, Сыныптарды байт-кодты өңдеу арқылы XML схемаларына бейімдейді Simple Java 2.7.1, System.Xml. C# серияландыру ? .NET фреймворкінің бөлігі, XML деректерін байлау кластарын қамтиды; xsd.exe құралы XSD схемасынан кластарды жасауға арналған xmlbeansxx C++ 0.9.1, Apache XMLBeans-тің C++ порты XStream Java 2004 01 01 1.4.10, JSON форматына түрлендіруге де қабілетті Zeus Java ? 3.5 бета,
Name Programming Language License First release Last stable release Code generation from XSD Custom mapping Note Apache Commons Betwixt Java 0.8 Dormant. Serializes objects to XML without requiring an XML schema definition Apache XMLBeans Java 5.1.1, Castor Java 1.4.1, Earlier versions also supported Java to SQL persistence but this has since been forked into a separate project CodeSynthesis XSD C++ and proprietary 4.0.0, with SAX or tree like mapping into C++ classes gSOAP C and C++ and proprietary 2000 12 08 2.8.131, Supports XML schema, WSDL, and SOAP; XML schemas are not required to serialize C/C++ data to XML; custom mapping of XML schema types to C/C++ types via a type mapping file and from C/C++ types to compatible XML schema types by source code annotation Java Architecture for XML Binding (JAXB) Java ? JiBX Java 1.2.6, Maps classes to XML schemas via bytecode manipulation Simple Java 2.7.1, System. Xml. Serialization C# ? Part of the NET framework, contains XML data binding classes; includes xsd. exe tool to generate classes from XSD schema xmlbeansxx C++ 0.9.1, C++ port of Apache XMLBeans XStream Java 2004 01 01 1.4.10, Also capable of serializing to JSON Zeus Java ? 3.5 beta,