
今回は失敗事例。前回のお話(ASTERIAでxml文書を扱ってみたNo7 配列の定義1)で配列の定義方法を書いていましたが、実際にやってみると思ったような結果になりません。
xmlファイルを読込んで、同じレイアウトのストリームにマッピングするだけの処理を作ったのですが、入力ファイルと出力結果の内容が一致しません。なんだか、妙なところで改行されるというか・・・
なので、動作検証してみようと思います。
■ テストデータ
テスト用の入力ファイルは、こんな感じです。
<?xml version="1.0" encoding="utf-8"?>
<root>
<record>
<繰返>
<field1>きくの</field1>
</繰返>
<繰返>
<field1>sakura</field1>
<field1>とう</field1>
</繰返>
</record>
<record>
<繰返>
<field1>無花果</field1>
</繰返>
</record>
</root>
上記のデータをExcelで表現するとこうなります。

recordタグがデータ1行を表し、その中に繰返という繰り返し項目があって、さらにその中でfield1という項目が最大2件定義されています。
これをファイルレイアウトとして表現すると、こんな感じでしょうか。

■ フロー(失敗)
テストデータをFileGetで読み込んで、Mapperで同じレイアウトに転記するだけのフローを作ります。レイアウト上、record、繰返、field1が全て繰返し項目なので、それに合わせてASTERIA側のフローを作ります。

Mapperコンポーネントのマッピングは、実際にデータが入っているfield1の配列を連結します。

これで、入力データと同じ形式でストリームが作成されると思ったのですが、実際の結果はこんな感じ。

入力データでは2つしかない recordタグが4つに増殖してしまいました。見た感じ。field1 の単位で改行というか、1レコードが終わったというか、そういう認識をされているように見えます。
・・・なんでだ?
■ 後書き
なんでもなにも、定義が間違ってるからに決まっています。冷静に考えれば分かりそうなものでした。
煮詰まっている時は分からなかったのですが、諦めて帰宅中にふと「あれ?もしかして・・・」と答えが思い浮かびました。
画面とかで少し長くなったので、正解は次回にします。
前回:ASTERIAでxml文書を扱ってみたNo7 配列の定義1
次回:ASTERIAでxml文書を扱ってみたNo9 配列の定義3
最新の記事:http://harikofu.blog.fc2.com/
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end ---
スポンサードリンク


