質問

私は(だけでなくASPXページ、フラッシュファイルと、おそらく別の1)少数の消費者によって消費されるいくつかの動的に生成されたXMLデータを持っています。

私は、カスタムハンドラとしてそれを実装しています。私はResponse.Writeをを使用してハンドラでXMLを構築して出力します。

今、私はハンドラへの私のXMLDataSourceのデータファイルのプロパティを設定した場合、それは文字通りASHXファイルを読み込もうとすると、HTTPを通してそれを呼び出すことはありません。

任意のアドバイスはありますか?

役に立ちましたか?

解決

別のクラスであなたのXMLの生成コードを配置します。ハンドラが(ところで、あなたが最初の場所でXMLを構築するために使用しているXML文書のハイテクのResponse.Writeを使用していない?)XMLを作成し、クライアントに結果を送信するためにクラスを使用しています。

クラスは、文字列として完成XMLを公開することができていることを確認します。

あなたのASPXページで同じクラスを使用して、XmlDataSourceコントロールのdataプロパティにXML文字列を割り当てます。

編集

あなたがてXmlTextWriterを使用していて、あなたのコメントから上記が明らかであるので、私はこれらの詳細を追加します混乱ビットます。

あなたは現在、XMLを生成するコードを取ると、App_Codeフォルダー内(あるいはDLLプロジェクトに)クラスに配置する必要があります。このクラスは、パラメータとしててXmlTextWriterを受け取るメソッドを持つことになります。

public class XmlCreator
{
    public void GenerateXml(XmlTextWriter writer)
    {
         //All your code that writes the XML
    }
}

あなたのハンドラではあなたは、このコードを持っている: -

XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);

は、Response.Writeをのための必要性に注意しないと、これが適切に行わエンコーディングを取得します。

あなたのASP.NETページでは、使用: -

StringWriter source = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(source, Encoding.Unicode);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);

yourXmlDataSource.Data = source.ToString();

XmlCreatorあなたはそれがXM生成を供給する必要がある他のどのようなデータに依存静的クラスを使用することができ、その場合にはインスタンス化する必要はないかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top