社内SEの徒然なる日記

ASTERIAでxml文書を扱ってみたNo8 配列の定義2

■ ASTERIAxmlファイルの配列

今回は失敗事例。前回のお話(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で表現するとこうなります。
ASTERIAでxml文書を扱ってみたNo8 - 1

recordタグがデータ1行を表し、その中に繰返という繰り返し項目があって、さらにその中でfield1という項目が最大2件定義されています。

これをファイルレイアウトとして表現すると、こんな感じでしょうか。
ASTERIAでxml文書を扱ってみたNo8 - 2

■ フロー(失敗)

テストデータをFileGetで読み込んで、Mapperで同じレイアウトに転記するだけのフローを作ります。レイアウト上、record、繰返、field1が全て繰返し項目なので、それに合わせてASTERIA側のフローを作ります。
ASTERIAでxml文書を扱ってみたNo8 - 3

Mapperコンポーネントのマッピングは、実際にデータが入っているfield1の配列を連結します。
ASTERIAでxml文書を扱ってみたNo8 - 4

これで、入力データと同じ形式でストリームが作成されると思ったのですが、実際の結果はこんな感じ。
ASTERIAでxml文書を扱ってみたNo8 - 5

入力データでは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 --- スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する