今回は、oxm を使用して XML をマッピングする手順をお届けします。oxm を使用して XML をマッピングする際の 注意事項 は何ですか? ここで実際のケースを見てみましょう。
XML 解析テクノロジーを理解する
XML 関連の概念
(1) DTD: XML 構文ルールは、XML ファイルの検証メカニズムです。XML ドキュメントと DTD ファイルを比較して、ドキュメントが仕様に準拠しているかどうか、要素とタグが正しく使用されているかどうかを確認できます。 (2) XML は SOA の基礎です。XML処理技術
(1) XML を使用するには、XML プロセッサまたは XML API を介してデータにアクセスする必要があります。現在、JAXP は XML を処理するための 2 つの方法、DOM と SAX を提供しています。 ①DOM:DOMは、メモリ上のXML文書の木構造に基づいて、プログラミングを通じてXML文書内のデータや構造にアクセスします。欠点は、XML ドキュメント全体をメモリにロードすると大量のオーバーヘッドが必要になることです。 ②SAX: イベント駆動型で、1 セグメントの解析を使用して DOM が大量のメモリを占有する問題を解決します。ただし、ドキュメントにランダムにアクセスできないという欠点があります。 (2) DOM と SAX の問題を解決するために、JDK6 の JAXP1.4 にはイベント駆動型のストリームベースの StreamAPI for XML (略して StAX) が登場しました。 (3) DOM、SAX、StAX はいずれも文書構造に基づいて XML を処理しますが、多くのアプリケーションは文書データ自体にのみ焦点を当てているため、XMLデータバインディング技術が登場しました。
データ バインディング: ストレージ メディア (XML ドキュメントとデータベース) からデータを抽出し、プログラムを通じてデータを表現するプロセスを指します。つまり、仮想マシンが理解して操作できるある種のメモリ構造にデータをバインドします。 XML バインディング フレームワーク: Castor、JAXB、JiBX、Quick、Zeus など。XStream の概要
クイックスタート
(1) XStreamを作成し、XMLパーサーを指定します
XStreamxstream=newXStream(newDomDriver()); パーサーを指定しない場合、XStream はデフォルトで XPP (XMLPullParser) パーサーを使用します。XPP は高速パーサーです。 (2) 例は次のとおりです。XStream エイリアスを使用する
(1) 上記の例では、Java オブジェクトの完全なクラス名が XML ファイルのルート要素に対応し、属性名が XML ファイルのノード要素に対応しますが、実際には両方の Java オブジェクトが対応します。 XML オブジェクトにはすでに名前が定義されている場合があります。この時点では、エイリアス マッピングを使用する必要があります。
XStreamコンバータ
開発プロセス中に、いくつかのカスタム タイプを変換する必要がある場合があります。Converter インターフェイスを実装し、XStream の registerConverter() メソッドを呼び出してコンバータを登録します。
XStream アノテーション
XStreamxstream=newXStream(newDomDriver());
オブジェクトをロードするには 2 つの方法があります:①方法1:
xstream.processAnnotations(AAA.class);
xstream.processAnnotations(BBB.class);
②方法2:
xstream.autodetectAnnotations(true);//アノテーション Bean を自動的にロードし、アノテーション付きオブジェクトもキャッシュします
ストリーミング オブジェクト
(1) XStream は、 PrettyWriter とCompactWriter の使用の違いは、PrettyWriter は生成された XML をフォーマットするのに対し、CompactWriter は生成された XML を圧縮することです。
永続化API
(1) XStream は、コレクション内のオブジェクトをファイル (XmlArrayList、XmlSet、XmlMap など) に永続化する簡単な方法を提供します。 (2) コレクションを作成する前に、永続化戦略 PersistenceStrategy も指定する必要があります。JSONの処理
(1) XML は WebService において揺るぎない地位を占めていますが、ほとんどの Web アプリケーションでは依然として軽量の JSON がデータ交換形式として使用されています。 (2) XStream は、Java オブジェクトと JSON の変換を完了するための JettisonMappedXmlDriver と JsonHierarchicalStreamDriver を提供します。 (3) JettisonMappedXmlDriver と JsonHierarchicalStreamDriver の違い: ①JettisonMappedXmlDriver は圧縮された JSON を生成し、JsonHierarchicalStreamDriver はフォーマットされた JSON を生成します。 ②JSONをオブジェクトに変換するには、JettisonMappedXmlDriverのみを使用できます。SpringOXMとの統合
SpringOXMの概要
SpringOXMは、SpringOXMの2つのコアインターフェイスである、主流のO/XMappingフレームワークの統合された抽象化とカプセル化を実現しました。 Marshaller はオブジェクトを XML に変換するために使用され、Unmarshaller は XML をオブジェクトに変換するために使用されます。概要
(1) Java アプリケーションの XML データ バインディングは 2 つの方法に要約できます: XML ドキュメントに基づいて Java 言語コード (JAXB、XMLBeans、Castor など) を生成します。 何らかの形式のマッピング バインディング メソッドを使用します。これは、Java クラスを XML (XStream、Castor、JiBX など) に関連付ける方法を設定します。 (2) 2 つの方法の比較: アプリケーションのニーズに適したスキーマまたは DTD によって定義された安定したドキュメント構造を使用する場合、コード生成アプローチが最良の選択となる可能性があります。 既存の Java クラスを使用している場合、または XML 構造ではなく、アプリケーションによるデータの使用法を反映するクラスの構造を使用したい場合は、マッピング方法が最適な選択です。 この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。 推奨読書:以上がoxm を使用して XML をマップする実装手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。