- PR -

XmlDataSourceから、ソースコードへアクセスさせない方法

1
投稿者投稿内容
Dr.Mancini
常連さん
会議室デビュー日: 2003/01/23
投稿数: 35
投稿日時: 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>
と、フルパス指定したところ、ちゃんとアクセスできました。
とりあえずはこのままでも良しですが、できれば相対パスで処理したいです。

おわかりになる方、どうぞよろしくお願い申し上げます。


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-12-26 19:43
 そのファイルの拡張子が、.aspx なのが気になりますね。これ、本当に XML ファイルですか?そうではなく、こいつが Response として返すモノが、XML ファイルなんじゃないですか?
 そうだとすると、.aspx ファイルを XML ファイルに「変換する」処理をしなければならないので、"http"というプロトコルを通して IIS にアクセスし、ASP.NET を通す必要があります。
 そうでなく、本当に XML ファイルなら、本当の XML ファイルの書式に従ってファイルを書いておけばいいでしょう。

[ メッセージ編集済み 編集者: Jitta 編集日時 2005-12-26 19:43 ]
Dr.Mancini
常連さん
会議室デビュー日: 2003/01/23
投稿数: 35
投稿日時: 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

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