我在使用 XmlTextReader.ReadElementContentAsBinHex 时遇到了内存膨胀问题。首先让我说我不是选择使用十六进制,而是因为需要与遗留系统互操作。
int read;
var buffer = new byte[4096];
while((read = reader.ReadElementContentAsBinHex(buffer, 0, buffer.Length)) > 0)
stream.Write(buffer, 0, read);
对于大小大于 64M 左右的元素内容,我得到一个 OutOfMemoryException,这似乎与阅读器内部 StringBuilder 中的分配累积有关。不幸的是,我对此无能为力,因为我在 IXmlSerializable 对象中使用它,所以我不得不使用 XmlTextReader(它不支持 ReadValueChunk 之类的东西)。这感觉像是一个 .NET 错误,但我可能会被困住。任何人有任何聪明的想法?