Content deleted Content added
→Description: added description of different approaches, split →Difficulties: and →Alternatives: into separate sections |
m →XML data binding frameworks: HTTP to HTTPS for SourceForge |
||
(24 intermediate revisions by 12 users not shown) | |||
Line 1:
{{
'''XML data binding''' refers to a means of representing information in an [[XML]] document as a [[business object]] in computer memory. This allows [[Application software|applications]] to access the data in the XML from the object, rather than using the [[Document Object Model|DOM]] or [[Simple API for XML|SAX]] to retrieve the data from a direct representation of the XML itself.
It makes it possible to read and write [[XML]] data using a programming language class library (e.g. [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]]), specifically created for a given XML data format.<ref>[https://www.liquid-technologies.com/xml-data-binder/what-is-xml-data-binding-part-1 "What is XML Data Binding - Tutorial"] Liquid Technologies. Retrieved 2024-07-24.</ref> Whilst it is possible to manually write a computer program to achieve this, '''XML data binding''' tools generate the source code to perform these tasks.
==Description==
An XML data binder accomplishes this by automatically creating a mapping between elements of the [[XML schema]] of the document we wish to bind and [[Instance variable|members]] of a [[Class (computer science)|class]] to be represented in memory.
When this process is applied to convert an XML document to an object, it is called [[Serialization|unmarshalling]] (also called deserialization). The reverse process, to serialize an object as XML, is called [[marshalling (computer science)|marshalling]].
Approaches to data binding can be distinguished as follows:
Line 11 ⟶ 13:
* '''XML schema based:''' Based on an existing XML schema, classes that correspond to the schema are generated.
* '''Class based:''' Based on a set of classes to be serialized, a corresponding XML schema is generated.
* '''Mapping-based:''' A mapping description, usually itself an XML document, describes how
==Difficulties==
Since XML is
Similarly, since objects residing in computer memory are not inherently
==Alternatives==
An alternative approach to automatic data binding relies instead on hand-crafted [[XPath]] expressions that extract
==Data binding in general==
One of XML data binding's strengths is the ability to [[serialization|
==XML data binding frameworks==
{|class="wikitable sortable" style="font-size: 85%; text-align: center; width: 100%;"
|-
! Name
! Programming Language
! License
! First release
! Last stable release
! Code generation from XSD
! Custom mapping
! Note
|-
| [[Apache Commons]] Betwixt
| Java
| {{free|[[Apache License|Apache]]}}
| {{start date|2003|01|28}}
| 0.8
| {{unk}}
| {{unk}}
| Dormant. Serializes objects to XML without requiring an XML schema definition
|-
| [[Apache XMLBeans]]
| Java
| {{free|[[Apache License 2.0]]}}
|
| 5.1.1, {{start date|2022|08|29}}
| {{yes}}
| {{unk}}
|
|-
| [[Castor (framework)|Castor]]
| Java
| {{free|[[Apache License|Apache 2.0]]}}
|
| 1.4.1, {{start date|2016|05|15}}
| {{unk}}
| {{unk}}
| Earlier versions also supported Java-to-SQL persistence but this has since been forked into a separate project
|-
| [[CodeSynthesis XSD]]
| [[C++]]
| {{GPL-lic}} and proprietary
|
| 4.0.0, {{start date|2014|07|22}}
| {{unk}}
| {{unk}}
| with SAX or tree-like mapping into C++ classes
|-
| [[gSOAP]]
| [[C (programming language)|C]] and [[C++]]
| {{GPL-lic}} and proprietary
| {{Start date and age|2000|12|08}}
| 2.8.131, {{start date|2023|09|23}}
| {{yes}}
| {{yes}}
| 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
| ?
|
|
| {{yes}}
| {{yes}}
|
|-
| [[JiBX]]
| Java
| {{free|[[BSD License]]}}
|
| 1.2.6, {{start date|2015|01|01}}
| {{yes}}
| {{yes}}
| Maps classes to XML schemas via bytecode manipulation
|-
|[[Liquid XML Studio|Liquid XML Data Binder]]
|C++, C#, Java, Visual Basic.Net, Visual Basic 6 (COM)
|Freeware and proprietry
|{{Start date and age|2001|6|1}}
|{{Start date and age|2024|06|18}}
|{{Yes}}
|{{Yes}}
|Supports XML schema (XSD), DTD, XDR, WSDL. Serializes XML to JSON and JSON to XML.
|-
|[[Liquid XML Studio|Liquid XML Objects]]
|C# and Visual Basic .Net (Supports XSD 1.1)
|Freeware and proprietry
|{{Start date and age|2019|03|03}}
|{{Start date and age|2024|06|18}}
|{{Yes}}
|{{Yes}}
|Direct replacement for XSD.exe. Integrated within [[Visual Studio|Microsoft Visual Studio]]. Supports XML schema (XSD 1.0 and XSD 1.1), DTD, WSDL. Serializes XML to JSON and JSON to XML.
|-
| [https://simple.sourceforge.net/ Simple]
| Java
| {{free|[[Apache License|Apache 2.0]]}}
|
| 2.7.1, {{start date|2017|02|09}}
| {{no}}
| {{yes}}
|
|-
| System.Xml.Serialization
| C#
| ?
|
|
| {{yes}}
| {{no}}
| Part of the .NET framework, contains XML data binding classes; includes <code>xsd.exe</code> tool to generate classes from XSD schema
|-
| [[xmlbeansxx]]
| C++
| {{free|[[Apache License|Apache 2.0]]}}
|
| 0.9.1, {{start date|2008|04|01}}
| {{unk}}
| {{unk}}
| C++ port of Apache XMLBeans
|-
| [[XStream]]
| Java
| {{free|[[BSD license|BSD]]-style license}}
| {{Start date and age|2004|01|01}}
| 1.4.10, {{start date|2017|05|23}}
| {{unk}}
| {{unk}}
| Also capable of serializing to JSON
|-
| [http://zeus.ow2.org/ Zeus] {{Webarchive|url=https://web.archive.org/web/20190128101400/http://zeus.ow2.org/ |date=2019-01-28 }}
| Java
| ?
|
| 3.5 beta, {{start date|2002|08|16}}
| {{unk}}
| {{unk}}
|
|}
==See also==
*[[Bound control]]
*[[Data structure]]
*[[JSON]]
*[[LDX+]]
Line 44 ⟶ 184:
*[http://www.w3.org/2002/ws/databinding XML Schema Patterns for Databinding Working Group]
[[Category:Programming constructs]]
[[Category:XML]]
|