Webで探しても十分な情報がなく、バグ発見か、と思いましたが、結果的には、MFLでの設定ミスであることがわかりました。問題は、MFLツールの設定がまずかった、ということです。問題の設定方法を再確認しましたので、非常にシンプルな解決方法を紹介します。
処理したいCSVファイルには、3つのフィールド(姓、名および会社)があります。以下はその例です。
各行は顧客を表します。このCSVファイルから次のようなXMLを作成したかったのです。Bob,Hope,MGM Lucille,Ball,MGM Harold,Lloyd,Unknown
まず、XMLルートノードを"CustomerList"と定義し、"Customer"グループをルートノードに追加しました。グループの発生回数は"Unlimited"とし、Groupのデリミタを"無し"(None)としました(下図はスクリーンショット)。<?xml version="1.0" encoding="UTF-8"?> <CustomerList> <Customer> <firstName>Bob</firstName> <lastName>Hope</lastName> <company>MGM</company> </Customer> <Customer> <firstName>Lucille</firstName> <lastName>Ball</lastName> <company>MGM</company> </Customer> <Customer> <firstName>Harold</firstName> <lastName>Lloyd</lastName> <company>Unknown</company> </Customer> </CustomerList>
次に、CustomerグループにfirstName(名)、lastName(姓)というフィールドを追加し、データ型をstring、発生回数を1回、区切り文字をカンマ(,)としました。最後のフィールドCompanyは、区切り文字を\n(改行)とし、その他の設定はfirstNameなどと同じにしました。MFLに組み込まれているテストツールで確認したところ、問題なく動作しました。
では、何が問題だったのでしょうか。BEA-382030というエラーメッセージが発生しないようにMFLを適切に設定するためには、Customerグループをちょっと変更する必要があります。その設定とは以下のようなものです。
- Group Delimiterグループ内のDelimitedラジオボタンを選択
- "Delimiter Is Shared"と"Delimiter Is Not Optional"の両チェックボックスをON
- Valueフィールドに\nを指定
正しく設定し終えたら、MFLファイルを保存しましょう。MFLファイルを再読み込みすることをお勧めします(Project Explorerでハイライトして、F5ボタンを押す)。すると、MFLファイルをプロキシサービスにて再選択でき、全てが正しく更新されます。あとは、プロキシサービスをデプロイして、通常通りテストをするだけです。もうこれからはあの忌々しい BEA-382030 エラーメッセージが出てくることはありません。
原文はこちら。
http://blogs.oracle.com/jeffdavies/entry/mfl_and_the_bea_382030
0 件のコメント:
コメントを投稿