Web サービスから非常に大きな (>500mb) xml ファイルを要求し、その内容を .xml ファイルにResponseStream
直接書き込みFileStream
ます。しかし、結果のxmlファイルを開くと、内容は次のようになります。
<Changes requestChangeTrackingId="-1" resultChangeTrackingId="2387">
<Selectors>
<Selector selectorId="1"><DateValidFrom>2000-01-01T00:00:00</DateValidFrom><DateValidTo>2099-12-31T00:00:00</DateValidTo><Code20Z>01A</Code20Z><CodeNUM/><CodeENT>1</CodeENT><ShortName>01A</ShortName></Selector>
<Selector selectorId="2"><DateValidFrom>2000-01-01T00:00:00</DateValidFrom><DateValidTo>2099-12-31T00:00:00</DateValidTo><Code20Z>01B</Code20Z><CodeNUM/><CodeENT>2</CodeENT><ShortName>01B</ShortName></Selector>
次のようにストリームをフォーマットするにはどうすればよいですか。
<Changes requestChangeTrackingId="-1" resultChangeTrackingId="2387">
<Selectors>
<Selector selectorId="1">
<DateValidFrom>2000-01-01T00:00:00</DateValidFrom>
<DateValidTo>2099-12-31T00:00:00</DateValidTo>
<Code20Z>01A</Code20Z>
<CodeNUM/>
<CodeENT>1</CodeENT>
<ShortName>01A</ShortName>
</Selector>
[...]
ファイル全体をメモリにロードできないため、次のようなソリューションを使用できません
XDocument.Load( responseStream ).Save( "somefile.xml" );
ストリームをある種の XmlStreamFormatter に渡し、ストリームをファイルシステムに直接書き込む方法はありますか? 保存するファイルは非常に大きくなる可能性があるため、常にストリーム全体をメモリにロードしてフォーマットすることはできません。