- - PR -
XmlDataSourceから、ソースコードへアクセスさせない方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-12-26 15:11
いつもお世話になっております。
ASP.NET、.NET Framework2.0で、 データベースのテーブルがバインドされたXMLを、 以下のようにDataListにバインドして表示しようとしています。 <asp:DataList ID="datalistMember" runat="server" DataSourceID="xmlMember"> <ItemTemplate> <%# XPath("Name/FirstName")%>, <%# XPath("Name/LastName")%> </ItemTemplate> </asp:DataList> <asp:XmlDataSource ID="xmlMember" runat="server" DataFile="~/xml/member.xml.aspx" XPath="/Members/Member"> </asp:XmlDataSource> しかしこれを行うと、xmlファイルのソースコードにアクセスしてしまうらしく、 「名前の先頭に '%' (16 進数値 0x25) を使用することはできません。 行 1、位置 2 です。」 とエラーになります。 XMLのソースコードの1行目は、 <%@ Page ContentType="text/xml" Language="C#" %> となっており、これをXMLとして読み込もうとした結果、不正な形式と判断されているようです。 XML自体にブラウザでアクセスすれば、正常に処理されます。 そこで、XmlDataSourceのパスを、 <asp:XmlDataSource ID="xmlMember" runat="server" DataFile="http://example.co.jp/xml/member.xml.aspx" XPath="/Members/Member"> </asp:XmlDataSource> と、フルパス指定したところ、ちゃんとアクセスできました。 とりあえずはこのままでも良しですが、できれば相対パスで処理したいです。 おわかりになる方、どうぞよろしくお願い申し上げます。 |
|
投稿日時: 2005-12-26 19:43
そのファイルの拡張子が、.aspx なのが気になりますね。これ、本当に XML ファイルですか?そうではなく、こいつが Response として返すモノが、XML ファイルなんじゃないですか?
そうだとすると、.aspx ファイルを XML ファイルに「変換する」処理をしなければならないので、"http"というプロトコルを通して IIS にアクセスし、ASP.NET を通す必要があります。 そうでなく、本当に XML ファイルなら、本当の XML ファイルの書式に従ってファイルを書いておけばいいでしょう。 [ メッセージ編集済み 編集者: Jitta 編集日時 2005-12-26 19:43 ] |
|
投稿日時: 2005-12-27 09:35
> そのファイルの拡張子が、.aspx なのが気になりますね。
> これ、本当に XML ファイルですか? > そうではなく、こいつが Response として返すモノが、 > XML ファイルなんじゃないですか? > おっしゃるとおり、Responseとして返すものがXMLです。 冒頭に述べましたが、SqlServerのテーブルからRepeaterを使ってバインドしたものを、XMLとして返しています。 > そうだとすると、.aspx ファイルを XML ファイルに「変換する」処理をしなければならないので、 > "http"というプロトコルを通して IIS にアクセスし、ASP.NET を通す必要があります。 > とすると、XmlDataSourceのDataFileのアドレスの先頭に、「http://」を付ける必要があるということですね。 httpを付けずに、相対アドレスで解決する手法がわからなかったのですが、解決できてよかったです。 どうもありがとうございました。 |
1