XML データ バインディングとは、 XMLドキュメント内の情報をコンピュータ メモリ内のビジネス オブジェクトとして表現する手段を指します。これにより、アプリケーションは、 DOMまたはSAX を使用して XML 自体の直接表現からデータを取得するのではなく、オブジェクトから XML 内のデータにアクセスできるようになります。
XMLデータバインディングツールは、特定のXMLデータ形式用に作成されたプログラミング言語クラスライブラリ(C++、C#、Javaなど)を使用してXMLデータの読み取りと書き込みを可能にします。 [1]これを実現するためにコンピュータプログラムを手動で記述することも可能ですが、XMLデータバインディングツールはこれらのタスクを実行するためのソースコードを生成します。
説明
XML データ バインダーは、バインドするドキュメントのXML スキーマの要素とメモリ内で表現される クラスのメンバーとの間のマッピングを自動的に作成することでこれを実現します。
このプロセスを適用して XML ドキュメントをオブジェクトに変換することを、アンマーシャリング(デシリアライゼーションとも呼ばれる) と呼びます。オブジェクトを XML としてシリアル化する逆のプロセスを、マーシャリングと呼びます。
データ バインディングへのアプローチは次のように区別できます。
- XML スキーマ ベース:既存の XML スキーマに基づいて、スキーマに対応するクラスが生成されます。
- クラス ベース:シリアル化されるクラスのセットに基づいて、対応する XML スキーマが生成されます。
- マッピング ベース:マッピング記述 (通常は XML ドキュメント) は、既存の XML スキーマがクラスのセットにどのようにマッピングされるか、およびその逆を記述します。
困難
XML はドキュメント指向の形式であり、オブジェクトは (通常は) ドキュメント指向ではないため、単純な XML データ バインディング マッピングでは、XML ドキュメントに埋め込まれた構造情報の一部が無視されることがあります。具体的には、コメント、XML エンティティ参照、兄弟順序などの情報は、バインディング アプリケーションによって作成されたオブジェクト表現では保持されない可能性があります。ただし、常にそうであるとは限りません。十分に強力な XML データ バインディング ツールは、XML ドキュメントに格納されている情報を 100% 保持できます。
同様に、コンピュータ メモリ内に存在するオブジェクトは、本質的に順番に格納されておらず、他のオブジェクトへのリンク (自己参照リンクを含む) を含む可能性があるため、単純な XML データ バインディング マッピングでは、オブジェクトを XML にマーシャリングするときに、オブジェクトに関するすべての情報を保持できない可能性があります。ただし、十分に強力なデータ バインディング ツールは、メモリ内に存在するオブジェクトに対してグラフ構造分析を実行し、標準の XML 参照属性を使用して、(循環的な) オブジェクト グラフ構造を XML にマーシャリングします。
代替案
自動データ バインディングの代替アプローチは、XML からデータを抽出する手動で作成されたXPath式に依存します。このアプローチにはいくつかの利点がありますが、欠点もあります。まず、このアプローチでは、XML ツリー構造に関する近似的な知識 (トポロジ、タグ名など) のみが必要であり、開発者は XML データを見てそれを判断できます。さらに、XPath を使用すると、アプリケーションは関連するデータ項目をバインドし、その他すべてをフィルター処理できるため、XML ドキュメント全体を完全にアンマーシャリングするために必要な不要な処理を回避できます。このアプローチの欠点は、オブジェクト モデルと XPath 式の実装が自動化されていないことです。代わりに、アプリケーション開発者はこれらの成果物を手動で作成する必要があります。これは時間がかかり、エラーが発生しやすく、XML スキーマと XML コンテンツ モデルが更新されるとアプリケーションのメンテナンスが妨げられます。もう 1 つの欠点は、XML データ バインディングがアンマーシャリング中に自動的に適用する XML スキーマ検証がないことです。スキーマの妥当性は、通常、安全なアプリケーションで必要です。
データバインディング全般
XML データ バインディングの強みの 1 つは、プログラム、言語、プラットフォーム間でオブジェクトをデシリアライズできることです。 [2]組み込みプロセッサ上のC (プログラミング言語) で記述されたデータロガーから構造化オブジェクトの時系列をダンプし、ネットワーク経由でPerlで処理し、最後にOctaveで視覚化することができます。構造とデータは、処理中一貫しており、カスタム フォーマットや解析は必要ありません。これは XML に固有のものではありません。たとえば、 YAMLは、XML に代わる強力なデータ バインディングとして登場しています。JSON ( YAMLのサブセットと見なすことができます) は、軽量または制限のあるアプリケーションに適していることがよくあります。
XML データバインディングフレームワーク
参照
- バウンドコントロール
- データ構造
- 翻訳
- LDX+
- シリアル化
- ヤム
参考文献
- ^ 「XML データ バインディングとは - チュートリアル」Liquid Technologies。2024 年 7 月 24 日閲覧。
- ^ 「XML バインディングとは」IBM。2024 年 4 月 16 日閲覧。
外部リンク
- XML データ バインディング リソース (Ronald Bourret 著)
- データバインディングのための XML スキーマ パターン ワーキング グループ
