ホームページ  >  記事  >  ウェブフロントエンド  >  oxm を使用して XML をマップする実装手順

oxm を使用して XML をマップする実装手順

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-13 13:51:321647ブラウズ

今回は、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 は、Java オブジェクトを XML にシリアル化するか、XML を Java オブジェクトに逆シリアル化するための、シンプルで使いやすいオープン ソース フレームワークです。

(2) XStream アーキテクチャ構成:

コンバータ: XStream は、変換する必要があるオブジェクトを検出すると、適切なコンバータ実装に委譲します。

IO (入力/出力): XStream は、それぞれシリアル化操作と逆シリアル化操作に使用される HierarchicalStreamWriter および HierarchicalStreamReader を通じて、基礎となる XML データから抽象化されます。

コンテキスト: XStream がオブジェクトをシリアル化および逆シリアル化するとき、MarshallingContext と UnmarshallingContext という 2 つのクラスが作成され、データを処理して適切なコンバーターに委任します。

ファサード(統一エントランス):上記3点を統合し、統一したインターフェースで利用者に開放します。

クイックスタート

(1) XStreamを作成し、XMLパーサーを指定します

XStreamxstream=newXStream(newDomDriver());

パーサーを指定しない場合、XStream はデフォルトで XPP (XMLPullParser) パーサーを使用します。XPP は高速パーサーです。

(2) 例は次のとおりです。

XStream エイリアスを使用する

(1) 上記の例では、Java オブジェクトの完全なクラス名が XML ファイルのルート要素に対応し、属性名が XML ファイルのノード要素に対応しますが、実際には両方の Java オブジェクトが対応します。 XML オブジェクトにはすでに名前が定義されている場合があります。この時点では、エイリアス マッピングを使用する必要があります。

XStream には 3 つのエイリアス構成があります:

カテゴリ名: エイリアス(Stringname,Classtype)を使用します。

クラス メンバーのエイリアス: aliasField(Stringalias,ClassdependentIn,StringfieldName) を使用します。

クラス メンバーは属性の別名として使用されます。 use aliasAttribute(ClassdefinedIn,StringattributeName,Stringalias) を使用して、それらを単独で指定することは意味がありません。また、useAttributeFor(ClassdependentIn,StringfieldName) を通じて特定のクラスに適用する必要があります。

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 は、

ObjectInputStream および ObjectOutputStream の代替実装を提供し、オブジェクト ストリームの形式で XML シリアル化または逆シリアル化操作を可能にします。前のものは、DOM ベースの XML パーサーによって読み取られた XML です。ここでは、明らかに、解析にストリーム メソッドを使用する必要があります。

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 サイトの他の関連記事に注目してください。

推奨読書:

Swiper によるモバイル広告画像カルーセルの実装

vue+swiper サイドバー メニューの実装方法

以上がoxm を使用して XML をマップする実装手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。