JAXB for beginners:JavaによるXML処理のチュートリアル
アプリケーションが相互に通信するためには、データを互換性の高い形式に変換する必要がしばしばあります。 この目的のために、JAXBライブラリはJavaの下に存在し、オブジェクトをXMLファイルに処理します。
JAXBを使用してXMLファイルを生成する-ベストプラクティス
JAXBは、 XMLバインディングのJavaアーキテクチャの略です。 これにより、JavaオブジェクトをXMLファイルに、またはその逆に変換できます。 始める前に、考慮すべき点がいくつかあります。
- JAXBは、 バージョン1.6以降、JREスイートの不可欠な部分です。 さらに、バグを修正したため、Java開発環境は最新の状態になっているはずです。
- 匿名 データ型と同様に、 float 、 decimal、または負の整数などのプリミティブなデータ型は避けてください。 JAXBにはこれに相当するものはありません。 それ以外の場合、オブジェクト、数値データ型、リスト、およびセットを変換できます。 JAXBは、 java.time.LocalDateなどの複雑なデータ型も処理できません。 これには、特別に作成されたアダプターが必要です。
- 専門用語では、JavaからXMLへの方向はマーシャリングと呼ばれ、 アンマーシャリングは反対の方向を表しています。
XML注釈
最新の動画
JAXB for beginners:CDコレクションの例を使用したチュートリアル
AudioCD.java:オーディオCDの属性はここで定義されます
MusicDB.java:音楽コレクションは、オーディオCDのリストで構成されています
このチュートリアルは、XMLで出力されるCDコレクションに関するものです。 複数のオーディオCDで構成されています。 アーティスト、リリース年、アルバム名、曲は各オーディオCDに記録されます。
- 最初に、オーディオCDのデータを含むクラスを作成する必要があります。 これには、アーティスト、リリース年、アルバム、CDに収録されている曲が含まれます。
- XML形式の出力をより適切に制御するには、Javaで@で始まるXML注釈が必要です。
- XMLファイルのルート要素は、次の注釈を使用して指定できます。 @ XmlRootElement(name = "Audiocd")
- Java属性の代替名を指定するゲッターメソッドまたはセッターメソッドの上に注釈を挿入できます。 たとえば、属性yearの代わりに、発行年を出力する必要があります。 @ XmlElement(name = "year of publication")
- 属性の順序は、アノテーション@XmlType(propOrder = {"artist"、 "title"、 "year"、 "songlist"})によって決定されます。 つまり、アーティストの名前が最初にXMLファイルに表示され、その後にアルバムの名前、リリース年、曲のリストが表示されます。 それ以外の場合、順序はJavaファイルに依存します。
- 次に、 MusicCDという新しいJavaクラスを作成します。このクラスには、オーディオCDのリストが含まれています。 音楽コレクションの名前と音楽コレクションの場所もここに記録されます。 原則として、手順は上記のJavaファイルの手順と似ています。
JavaオブジェクトからXMLファイルへ
最新の動画
AudioCDMain.java:いくつかのオーディオCDがここで作成されます
AudioCDMain.java:音楽コレクションを作成する
AudioCDMain.java:コードをXMLに変換します
変換自体は、テストプログラム、より正確にはmainメソッドで行われます。
- まず、複数のオーディオCDが作成されるように、複数のオーディオCDインスタンスを作成します。
- MusicDBタイプの音楽コレクションのインスタンスも必要です。
- さらに、JAXBはルート要素を含むJavaクラスを知る必要があります。 私たちの場合、これはMusicDBクラスです: JAXBContext context = JAXBContext.newInstance(MusicDB.class);
- 変換は、上記のJAXBメソッドにリンクされているMarshallerインスタンスを使用して行われます。Marshaller m = context.createMarshaller();
- Marshallerメソッドは、XMLドキュメントの出力形式などの追加オプションを提供します。.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT、Boolean.TRUE);
反対方向の全体
最新の動画
AudioCDMain.java:JAXBはXMLファイルからJavaオブジェクトを生成します
XMLファイルはすでにJAXBによってフォーマットされています
基本的に、他の方向への変換は同様の方法で進行します。
- 最初に、unmarshallerメソッドのインスタンスが作成されます。unmarshaller at = context.createUnmarshaller();
- 次に、アンマーシャラーインスタンスには、以前に作成されたXMLファイルの名前が必要です。MusicDBmdb2 =(MusicDB)um.unmarshal(新しいFileReader(MUSICDB_XML));