- PR -

iReportでxml入力

1
投稿者投稿内容
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2005-11-17 22:07

iReportの入力をXMLからおこなおうとしています。

1 データとなるxmlファイル tdata.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<ROWSET>
<ROW num="9">
<hkey>1</hkey>
<name>luck</name>
</ROW>
<ROW num="32">
<hkey>99</hkey>
<name>tom</name>
</ROW>
<ROW num="41">
<hkey>450</hkey>
<name>tom</name>
</ROW>
</ROWSET>


2 DataSource定義
Connection/DataSource でXML file datasource
name:td
Selection Expression:/ROWSET/ROW

3 Field定義
<field name="HKEY" class="java.lang.Integer">
<fieldDescription><![CDATA[/ROWSET/ROW+hkey]]></fieldDescription>
</field>
<field name="NAME" class="java.lang.String">
<fieldDescription><![CDATA[/ROWSET/ROW+name]]></fieldDescription>
</field>

4 TextField定義
<textFieldExpression class="java.lang.String"><![CDATA[$F{HKEY}.toString()]]></textFieldExpression>

<textFieldExpression class="java.lang.String"><![CDATA[$F{NAME}.toString()]]></textFieldExpression>


として実行したら
HKEY NAME

2   NaN
100  NaN
451  Nan

となります。
つまり
HKEYはXMLに1件目は設定した値x2、2件目以降は設定した値+1件目に設定した値が出力され
NAMEはXMLに設定した値に拘わらず、NaNの文字列、未設定、表現不可といった意味だとおもいます。
が、出力されてます。

当然
HKEY NAME

1   luck
99  tom
450  tom

という結果を期待しているのですが、どこがおかしいでしょうか?

Webで検索したのですが、XML DataSourceに関するものはうまくいったというのは日本語では得られま
せんでした。
やってるよ、という方いらっしゃいますか?

当方でテストしているバージョンは0.5.2です。
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2005-11-17 23:52
引用:

つまり
HKEYはXMLに1件目は設定した値x2、2件目以降は設定した値+1件目に設定した値が出力され
NAMEはXMLに設定した値に拘わらず、NaNの文字列、未設定、表現不可といった意味だとおもいます。
が、出力されてます。


1件目も設定した値+1件目ではありませんか?

<?xml version="1.0" encoding="Shift_JIS"?>
<ROWSET>
<ROW num="9">
<hkey>2</hkey>
<name>luck</name>
</ROW>
<ROW num="32">
<hkey>99</hkey>
<name>tom</name>
</ROW>
<ROW num="41">
<hkey>450</hkey>
<name>tom</name>
</ROW>
</ROWSET>
こうした場合
HKEY NAME

4   NaN
101  NaN
452  NaN
こうなっていませんか?

<fieldDescription><![CDATA[/ROWSET/ROW/name]]></fieldDescription>
こうした場合も
NaN
になりますか?
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2005-11-18 14:48
kumaさんレスありがとうございます。

>1件目も設定した値+1件目ではありませんか?
そうです。

>4   NaN
>101  NaN
>452  NaN
>こうなっていませんか?
なっています。

><fieldDescription><![CDATA[/ROWSET/ROW/name]]></fieldDescription>
>こうした場合も
>NaN
>になりますか?
いいえ
1件目の値"luck"が3回出力されます。

試しに[/ROWSET/ROW/hkey]
をやってみても同じ値が3回出力されます。

XMLのパス指定では
 /ROWSET/ROW/name
だとおもうのですが
http://ireport.sourceforge.net/index.php?p_module=page&pageid=17#7.4
を参照して
[/ROWSET/ROW+name]
でおこないました。

どちらも期待した結果ではないんですよね。

期待した結果を得るのはどうすればよいでしょう?
どうして毎回同じ値が出力されてしまうのでしょう?
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2005-11-18 15:18
あと、いじれそうなのは下の辺りですよね?
引用:

2 DataSource定義
Connection/DataSource でXML file datasource
name:td
Selection Expression:/ROWSET/ROW

3 Field定義
<field name="HKEY" class="java.lang.Integer">
<fieldDescription><![CDATA[/ROWSET/ROW+hkey]]></fieldDescription>
</field>
<field name="NAME" class="java.lang.String">
<fieldDescription><![CDATA[/ROWSET/ROW+name]]></fieldDescription>
</field>


リンク先のページを読んで、ちょっと的はずれな感じだったので修正します。
<field name="HKEY" class="java.lang.Integer">
<fieldDescription>/ROWSET/ROW+hkey</fieldDescription>
</field>
<field name="NAME" class="java.lang.String">
<fieldDescription>/ROWSET/ROW+name</fieldDescription>
</field>
こうなんだろうか・・

#編集前
#Selection Expression:/ROWSET/ROW
#がXPathになっていると考えて
#<field name="HKEY" class="java.lang.Integer">
#<fieldDescription><![CDATA[hkey]]></fieldDescription>
#</field>
#<field name="NAME" class="java.lang.String">
#<fieldDescription><![CDATA[name]></fieldDescription>
#</field>
#こんな感じではどうです?

[ メッセージ編集済み 編集者: kuma 編集日時 2005-11-18 16:02 ]
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2005-11-18 21:35
kumaさん レスありがとうございます。

最初からリンクを書いておけばよかったですね。
あそこに書いてある内容が間違っていないとも限らないですが、、、

他のスレッドで書かれてましたが、iReportを使われてないのですね

<fieldDescription><![CDATA[/ROWSET/ROW+hkey]]></fieldDescription>
と書いていますが
iReport上で設定しているのは"/ROWSET/ROW+hkey"の部分であとはiReportが
定義ファイルを出力するとき自動的に付加しています。

ほかの項目も含めて、画面入力イメージでここに転記するより吐き出したファイル
のイメージを書いたほうがわかりやすいのでファイルイメージを書きました。

なんで、今回kumaさんが指摘された部分はiReportからは編集できません。
直接出力された定義ファイルを編集するという手もあるのかな、とはおもうの
ですが、その方法だと一連の処理をどうするのか(iReportの画面からはボタン一発)
わかってないので、すぐにはできません。

日本語で得られるweb上の情報では、XML入力の質問はあるのですが、それに対する
アドバイスは見つかりません。
iReportのforum(英語)ではディスカッションされていて、私には詳細は理解でき
ないのですが、その一連のやりとりでうまくいってるようです。
http://sourceforge.net/forum/message.php?msg_id=2838171
ほかにも、XMLをDataSourceとするやりとりは、いろいろあります。

kumaさんから指摘いただいた方法も試してみたいとおもいます。
あとは英語のweb情報を読むとか、あるいは上のforumに投稿するとかになるかな?

どなたか、やられた方はいらっしゃいませんか?
1

スキルアップ/キャリアアップ(JOB@IT)