質問

私は、XMLは、しかし、それはパスを期待返すASHXを作成しています私が行うとき、

XmlWriter writer = XmlWriter.Create(returnXML, settings)

しかしreturnXMLは(それが動作しません推測)今ちょうど空の文字列である、しかし、私はその後、応答テキストとして送信することができます何かにXMLを記述する必要があります。私は常にXmlDocumentをしようとしたが、それは私に文字列を期待して、エラーを与えました。私はここで行方不明ですか?

役に立ちましたか?

解決

あなたが本当にメモリに書き込みたい場合は、

StringWriterに渡したり、このようなStringBuilderます:

using System;
using System.Text;
using System.Xml;

public class Test
{
    static void Main()
    {
        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;        
        StringBuilder builder = new StringBuilder();

        using (XmlWriter writer = XmlWriter.Create(builder, settings))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("root");
            writer.WriteStartElement("element");
            writer.WriteString("content");
            writer.WriteEndElement();
            writer.WriteEndElement();
            writer.WriteEndDocument();
        }
        Console.WriteLine(builder);
    }
}

あなたが応答に直接それを書きたい場合は、しかし、あなたが代わりにHttpResponse.OutputのあるTextWriterに渡すことができます:

using (XmlWriter writer = XmlWriter.Create(Response.Output, settings))
{
    // Write into it here
}

他のヒント

何かが私の側に欠けていた:のXmlWriterのバッファをフラッシュます:

static void Main()
{
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;        
    StringBuilder builder = new StringBuilder();

    using (XmlWriter writer = XmlWriter.Create(builder, settings))
    {
        writer.WriteStartDocument();
        writer.WriteStartElement("root");
        writer.WriteStartElement("element");
        writer.WriteString("content");
        writer.WriteEndElement();
        writer.WriteEndElement();
        writer.WriteEndDocument();

        writer.Flush();

    }
    Console.WriteLine(builder);
}
    StringBuilder xml = new StringBuilder();
    TextWriter textWriter = new StringWriter(xml);
    XmlWriter xmlWriter = new XmlTextWriter(textWriter);

すると、すべてのXML書き込みを行うためのXmlWriterを使用し、それはStringBuilderのに直接書き込みます。

編集:ジョンスキートのコメントに感謝します:

    StringBuilder xml = new StringBuilder();
    XmlWriter xmlWriter = XmlWriter.Create(xml);

それを行うための最善の方法は、応答出力ストリームに直接書き込むことです。ビルトインだASP.NETにそのストリームは、あなたがそれにXMLを書き込むことができ、この場合にはストリームとしてどのような出力を、書くことができるようにする。

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