Luc*_*tti 3 .net c# xml streaming serialization
我正在尝试IEnumerable<MyObject>使用 an序列化一个非常大XmlSerializer的对象,而不将所有对象保留在内存中。
该IEnumerable<MyObject>实际上是懒..
我正在寻找一种流媒体解决方案,它将:
IEnumerable<MyObject>
使用标准序列化将对象从序列化到底层流(我不想在这里手工制作 XML!)我正在尝试使用此代码:
using (var writer = new StreamWriter(filePath))
{
var xmlSerializer = new XmlSerializer(typeof(MyObject));
foreach (var myObject in myObjectsIEnumerable)
{
xmlSerializer.Serialize(writer, myObject);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了多个 XML 标头,而且我无法指定根标记,<MyObjects>因此我的 XML 无效。
任何的想法?
谢谢
该XmlWriter班是XML生成一个快速流API。这是相当低级的,MSDN 有一篇关于使用XmlWriter.Create().
编辑:链接已修复。这是文章中的示例代码:
async Task TestWriter(Stream stream)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Async = true;
using (XmlWriter writer = XmlWriter.Create(stream, settings)) {
await writer.WriteStartElementAsync("pf", "root", "http://ns");
await writer.WriteStartElementAsync(null, "sub", null);
await writer.WriteAttributeStringAsync(null, "att", null, "val");
await writer.WriteStringAsync("text");
await writer.WriteEndElementAsync();
await writer.WriteCommentAsync("cValue");
await writer.WriteCDataAsync("cdata value");
await writer.WriteEndElementAsync();
await writer.FlushAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13498 次 |
| 最近记录: |