サンプル: 文字列にシリアル化 (XML からデータベースへ)

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  マッピングのデザイン > 文字列の解析とシリアル化 >

サンプル: 文字列にシリアル化 (XML からデータベースへ)

このサンプルは、データを文字列にシリアル化するマッピングデザインの作成に必要なステップを説明します。このサンプルはにはサンプルファイルが存在します。このサンプルを開始する前に、サンプルファイルを確認するには、ファイルを以下のパスで検索することができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\SerializeToString.mfd

 

複数の <Person> 要素により構成される XML ファイル (関連したスキーマ) があると仮定します。各 <Person> 要素は、それぞれの姓、名、役職、 内線番号、電子メールアドレスを表します:

 

<Person>
    <First>Joe</First>
    <Last>Firstbread</Last>
    <Title>Marketing Manager Europe</Title>
    <PhoneExt>621</PhoneExt>
    <Email>j.firstbread@nanonull.com</Email>

</Person>

 

目的は、 XML ファイルから各 <Person> 要素 を抽出し、リテラルに (XML タグも含め)  SQLite データベースの PEOPLE 新規データベースの記録として挿入することです。 PEOPLE テーブルは、 2 つの列のみを含んでいます: IDPERSON。 定義は、以下の通りです:

 

CREATE TABLE PEOPLE (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, PERSON TEXT);

 

マッピングが実行された後、 PEOPLE テーブルは、 XML ファイル内の<Person> 要素の行数とと同じ数の行を持つようになります。

 

このゴールを達成するには、 以下を行います:

 

1.マッピングエリア ソース XML コンポーネントに ( 「挿入 | XML スキーマ/ファイル」 メニューコマンドを使用して)追加します。サンプルファイルは以下で検索することが出来ます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\MFCompany.xml
2.(コピー-貼り付けを使用して) XML コンポーネントを複製します。
3.複製された XML コンポーネントで、 btn_file_string をクリックして、 「XML を文字列にシリアル化する」 を選択します。

ex_string_serialize_01

4.コンテキストメニューから、複製されたコンポーネントを右クリックして、「ルート要素の変更」 を選択します。ルート要素を <Person> に変更します。

ex_string_serialize_02

全般的に、ルート要素を XML スキーマ内で  (ローカルではない) グローバル宣言を持つ要素に変更することができます。スキーマ内でグローバルに定義されていない要素は "ルート要素の選択" ダイアログボックスにリストされません。

 

5. コンポーネント をダブルクリックし、 「XML 宣言の書き込み」 チェックボックスをクリアします。これにより、 XML 宣言が各 <Person> 要素のために書き込まれることを回避します。

ex_string_serialize_06

6.マッピングエリアにターゲット SQLite データベースコンポーネントを以下のパスから追加します: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\\dbserialize.db (「挿入 | データベース メニューコマンドを使用して データベースコンポーネントを挿入します。データベースへ接続する も参照)。 データベースオブジェクトを挿入するようにプロンプトされると、 PEOPLE テーブルを選択します。

ex_string_serialize_03

7.コンポーネントを下で表示されるように、リンクします。マッピングの左側では、 <Person> 要素は、コンポーネントはシリアル化コンポーネントにマップされます。マッピングの右側では、 PEOPLE データベース テーブルのシリアル化された文字列の値が PERSON 列に挿入されます。最後に、 <Person> から PEOPLE テーブルへ描かれたコネクタは、 MapForce に当てはまる各 <Person> 要素のために新しい記録を作成するように命令します。

ex_string_serialize_04

8.データベースコンポーネントの A:In ボタンをクリックし、 MapForce にマッピング変換が実行される都度、以下のアクションを行うように命令します:
a.「全てのレコードを削除」 オプションを選択します。マッピングランタイムでは、これは既存のレコードを新規のものが挿入される前にデータベースから削除します。
b.ID 列の横の 「DB-生成された」 オプションを選択します。 これはレコードの ID がデータベースにより生成されることを確保します。「DB-生成された」 オプションは列がこのオプションをサポートする場合のみ表示されます。識別、または、自動インクリメントフィールドではない場合、 max+1 オプションを代わりに使用することができます。このオプションは、その列内で既存の最高値が何であるかを確認し、次に使用することのできる1つずつ増やされた整数を入力します。

ex_string_serialize_05

ID 列のために選択されていた max()+1 アクションに注意してください。これによりデータベース内の既存の ID 値の最大値を MapForce に分析するように命令します。

 

データを文字列にシリアル化するマッピングデザインが作成されました。 「出力」 タブをクリックすると、プレビュー SQL クエリ は、 XML ファイル内の 各 <Person> 要素 ために個別の記録がデータベースに挿入されることを示します。


(C) 2019 Altova GmbH