- - PR -
ObjectをDocumentにキャストしたい
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-28 08:35
こんにちは。
以下の様にFLASHからPOSTで受信したXMLをサーブレット内でXMLとして使いたい為、 Documentにキャストする良い方法はないでしょうか。 よろしくお願いします。 Object reqData = (Object)request.getParameterNames().nextElement(); 環境 WinXP IE6 Tomcat4.1 j2se1.4.1 | ||||||||
|
投稿日時: 2004-04-28 08:56
もんもです。
こんな感じでは? Document = (Document)reqData; もしくはinstanceofで比較してからキャストすればいいと思います。 | ||||||||
|
投稿日時: 2004-04-28 12:19
いくつか勘違いがあるようです。
・HttpServletRequest#getParameterNames()は文字通りパラメータ名のリストを返すもので、 パラメータの値を返すものではない。 ・HTTPリクエストのパラメータの値は文字列(Stringオブジェクト)である。 ・「キャスト」は、「このインスタンスをこの型で扱う」という宣言でしかなく、文字列で来た XMLデータをDocumentオブジェクトに変換してくれるような便利な仕組みではない。 ではどうすればいいかというと、 ・POSTされたXMLデータを文字列として取り出し、 ・その文字列からDocumentオブジェクトを生成する ことでできます。とりあえずキーワードとしてHttpServletRequest#getParamater、 DocumentBuilderFactory、DocumentBuilderを調べてみてください。 | ||||||||
|
投稿日時: 2004-04-28 12:35
こんにちは。
HttpServletRequestからInputStreamを取り出して DocumentBuilder bd = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document d = bd.parse(new InputSource(request.getInputStream())); みたいな感じじゃ出来ないでしょうか? 動作は確認してないので、ダメだったらごめんなさい。 [ メッセージ編集済み 編集者: latte 編集日時 2004-04-28 12:35 ] [ メッセージ編集済み 編集者: latte 編集日時 2004-04-28 12:37 ] | ||||||||
|
投稿日時: 2004-04-28 18:07
もんもさん、ukさん、latteさん、返信ありがとうございます。
一つ一つ理解して解決させたいと思っています。 > ukさん > HttpServletRequest#getParameterNames()は文字通りパラメータ名の > リストを返すもので、パラメータの値を返すものではない。 おっしゃる通りです。 例えばフォームのデータを受け取る場合、 String fName = request.getParameter("name"); みたいにしますよね。で、パラメータ名(上では"name")が無いXMLの様な場合は、 どうやって変数に格納すればいいのでしょうか? 初歩的な質問かもしれませんが、よろしくお願いします。 > latteさん 後で試してみたいと思います。 ありがとうございます。 | ||||||||
|
投稿日時: 2004-04-28 19:07
「パラメータ名がない」というのは、どのようにXMLデータを送っているのでしょうか? HTTPリクエストのコンテンツにそのままXMLデータが入っているのならlatteさんが書かれている 方法でできると思いますが、通常Webブラウザからだとそのようなリクエストにはなりません。 | ||||||||
|
投稿日時: 2004-04-28 20:26
FLASHから普通に変数を送信した場合、request.getParameter("name");
で問題ありませんでした。つまり、Get送信の場合 http://localhost:8080/WebApp/servlet/dir.MyClass?name=xylitol の様になってます。で、xmlをGetで送ると http://localhost:8080/WebApp/servlet/dir.MyClass?<a><b>test</b></a> こんな感じになってました。 String reqData = (String)request.getParameterNames().nextElement(); 上の様に書くとうまくいくので、取りあえずこれでやってみようと思います。 | ||||||||
|
投稿日時: 2004-04-28 20:33
うーむ、XMLをGETで送るってのは…話がかみ合わないはずだ 文字数が多かったりすると問題あるのですがそれはわかってますか?
確かにそれでうまくいくのかも知れませんが、getQueryStringの方がよいでしょう。 [ メッセージ編集済み 編集者: uk 編集日時 2004-04-28 20:34 ] | ||||||||
