我正在使用名为" root"的父元素节点下的xmlwriter.writenode(reader,false)在内存流中编写一个xml节点。 ,对于某些节点,流长度始终为零。我的代码看起来像这样,
MemoryStream ms=new MemoryStream();
xmlTextWriter writer= new XmlTextWriter( ms, encoding );
writer.WriteStartElement( "root" );
writer.WriteNode( reader, false );
if(ms.length!=0)
{
.....
....
}
writer.WriteEndElement();
writer.Flush();
我可以获得在编写节点后刷新写入器的长度。是否有关于小型或大型节点的流长度的任何优化?
答案 0 :(得分:1)
XmlTextWriter
在内部使用StreamWriter
,其默认缓冲区大小为1Kb。
在编写XML时,将使用此StreamWriter
编写内容,这只会在其填满或调用Stream
时将其缓冲区刷新到基础Flush()
写一个小节点可能无法填充此缓冲区,而写一个大节点可能会这样做。这就是为什么对于大型节点,您会在明确调用MemoryStream
之前将数据刷新到Flush()
。