1. XML解析テクノロジーを理解します
1.1。 XML関連の概念
(1)DTD:XMLファイルの検証メカニズムであるXML構文ルール。 XMLドキュメントをDTDファイルと比較して、ドキュメントが仕様に準拠しているかどうか、および要素とラベルが正しく使用されているかどうかを確認できます。
(2)XMLはSOAの基礎です。
1.2。 XML処理技術
(1)XMLを使用するには、XMLプロセッサまたはXMLAPIを介してデータにアクセスする必要があります。現在、JAXPはXMLを処理するための2つの方法を提供します:DomとSAX。
①DOM:DOMは、メモリ内のXMLドキュメントのツリー構造に基づいて、XMLドキュメント内のデータと構造にアクセスします。欠点は、XMLドキュメント全体をメモリにロードするために多くのオーバーヘッドが必要であることです。
Sax:イベント駆動型に基づいて、1つのセグメントが1つのセグメントを解析するために使用されます。これは、DOMが多くのメモリを取得する問題を解決することですが、その欠点はドキュメントにランダムにアクセスできないことです。
(2)DOMとSAXの問題を解決するために、ストリームベースのStreamApiforXML(略してSTAX)が現れました。 JDK6のJAXP1.4に追加されており、STAXもイベント駆動型です。
(3)DOM、SAX、およびSTAXはすべてドキュメント構造からXMLをすべて処理しますが、多くのアプリケーションはドキュメントデータ自体にのみ焦点を当てているため、XMLデータバインディングテクノロジーが生まれました。
データバインディング:ストレージメディア(XMLドキュメントとデータベース)からデータを抽出し、プログラムを介してこのデータを表現するプロセス、つまり、仮想マシンが理解して動作できるメモリ構造にデータをバインドすることを指します。
XMLバインディングフレームワーク:Castor、Jaxb、Jibx、Quick、Zeusなど。
2。XML処理ツール:XStream
2.1。 XSTREAMの概要
(1)XStreamは、XMLにJavaオブジェクトをシリアル化するためのシンプルで使いやすいオープンソースフレームワーク、またはXMLをJavaオブジェクトに脱出するためのフレームワークです。 XStreamの主要な機能:
(2)XSTREAMアーキテクチャの構成:
コンバーター:XStreamが変換する必要があるオブジェクトに遭遇すると、適切なコンバーターの実装に委任されます。
IO(入力/出力):XStreamは、階層StreamWriterおよびHierarchicalStreamReaderを介して基礎となるXMLデータから抽象化されており、それぞれシリアル化および脱派化操作に使用されます。
コンテキスト:XStreamが脱派化オブジェクトをシリアル化すると、2つのクラスがMarshallingContextとUnmarshallingContextが作成され、タワーゲートがデータを処理し、適切なコンバーターに委任します。
ファサード(統一された入り口):上記の3つのポイントを一緒に統合し、統一されたインターフェイスを使用してユーザーに開きます。
2.2。クイックスタート
(1)XStreamを作成し、XMLパーサーを指定します
XstreamxStream = newxStream(newdomdriver());
パーサーを指定しない場合、XStreamはデフォルトでXPP(XMLPullParser)パーサーを使用します。これは高速パーサーです。
(2)例は次のとおりです。
2.3。 XStreamエイリアスを使用します
(1)上記の例では、Javaオブジェクトの完全なクラス名はXMLファイルのルート要素に対応し、属性名はXMLファイルのノード要素に対応します。ただし、実際の状況では、JavaオブジェクトとXMLオブジェクトの両方がすでに定義されている可能性があるため、エイリアスマッピングが必要です。
XStreamには3つのエイリアス構成があります。
カテゴリ名:エイリアス(StringName、ClasStype)を使用します。
クラスメンバーエイリアス:AliaSfield(Stringalias、classdefinedin、StringfieldName)を使用します。
クラスメンバーは属性エイリアスとして使用されます:AliaSattribute(classdefinedin、stringattributename、stringalias)を使用し、それらの名前だけで意味がありません。また、useattributefor(classdefinedin、stringfieldname)を通じて特定のクラスにも適用する必要があります。
(2)エイリアスを通じて2.2でこの例を変更します。
2.4。 XSTREAMコンバーター
開発プロセス中に、いくつかのカスタムタイプを変換する必要がある場合があります。コンバーターインターフェイスを実装し、XSTREAMのRegisterConverter()メソッドを呼び出してコンバーターを登録します。
2.5。 XStream Annotation
(1)Xstreamの一般的な注釈は次のとおりです。
(2)使用します
XstreamxStream = newxStream(newdomdriver());
オブジェクトをロードする方法は2つあります。
method 1:
XStream.ProcessAnnotations(aaa.class);
XStream.ProcessAnnotations(bbb.class);
②メソッド2:
XStream.AutodeTectEctannotations(true); // Auto Auto Autoロード注釈付きBeanとまた、注釈付きオブジェクトをキャッシュします。
2.6。流れるオブジェクト
(1)XSTREAMは、ObjectInputStreamおよびObjectOutputStreamの代替実装を提供し、オブジェクトストリームの形でXMLシリアル化または降下操作を可能にします。前のものは、DOMベースのXMLパーサーによって読み取られたXMLです。ここでは、明らかに解析にストリーム方法を使用する必要があります。
例は次のとおりです。
(2)PlaytwriterとCompactWriterの使用の違いは、Playtwriterが生成されたXMLをフォーマットし、CompactWriterが生成されたXMLを圧縮することです。
2.7。永続性API
(1)XStreamは、コレクション内のオブジェクトをファイルに持続する簡単な方法を提供します。
(2)コレクションを作成する前に、Persistence Strategy PersistenceStrategyを指定する必要もあります。
2.8。 JSONを処理します
(1)XMLはWebServiceで揺るぎないポジションを持っていますが、ほとんどのWebアプリケーションでは、軽量JSONがデータ交換形式として依然として使用されています。
(2)XStreamはJetsionMappedXmldriverとJsonHierarchicalStreamDriverを提供して、JavaオブジェクトとJSONの変換を完了します。
例は次のとおりです。
(3)JettisonMappedxmldriverとjsonhierarchicalStreamDriverの違い:
①jetsisonMappedxmldriverは圧縮されたJSONを生成し、jsonhierarchicalStreamDriverはフォーマットされたJSONを生成します。
jsonをオブジェクトに変換する場合は、JettisonMappedxmldriverのみを使用できます。
3.その他の一般的なO/XMappingオープンソースプロジェクト
JAXB、XMLBEANS、CSTOR、JIBXの比較:
4。Springoxmとの統合
4.1。 Springoxmの概要
(1)Springoxmは、主流のO/XMappingフレームワークの統一された抽象化とカプセル化を行いました。 MarshallerとUnmarshallerは、Springoxmの2つのコアインターフェイスです。 MarshallerはオブジェクトをXMLに変換するために使用され、UnmarshallerはXMLをオブジェクトに変換するために使用されます。
(2)O/XMappingコンポーネントラッパーは次のとおりです。
4.2。春に構成します
(1)Xstreammarshaller構成インスタンス:
5。概要
(1)JavaアプリケーションのXMLデータバインディングは、2つの方法に要約できます。
XMLドキュメントに基づいて、Java言語コード(jaxb、xmlbeans、castorなど)を生成します。
何らかの形式のマッピングバインディング方法を使用します。つまり、JavaクラスがXML(XStream、Castor、JIBXなど)に関連付けられている方法を設定します。
(2)2つの方法の比較:
スキーマまたはDTDによって定義された安定したドキュメント構造を使用し、構造はアプリケーションのニーズに適しているため、コード生成方法が最良の選択かもしれません。
既存のJavaクラスを使用する場合、またはXML構造ではなく、アプリケーションのデータの使用を反映するクラスの構造を使用する場合、マッピング方法が最良の選択です。
要約します
上記は、オブジェクトXMLマッピング分析にOXMを使用するスプリングに関するものです。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!