- - PR -
iReportでxml入力
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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です。 | ||||
|
投稿日時: 2005-11-17 23:52
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 になりますか? | ||||
|
投稿日時: 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] でおこないました。 どちらも期待した結果ではないんですよね。 期待した結果を得るのはどうすればよいでしょう? どうして毎回同じ値が出力されてしまうのでしょう? | ||||
|
投稿日時: 2005-11-18 15:18
あと、いじれそうなのは下の辺りですよね?
リンク先のページを読んで、ちょっと的はずれな感じだったので修正します。 <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 ] | ||||
|
投稿日時: 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