写入节点后,流长度为零

时间:2015-05-10 15:29:19

标签: c# xml

我正在使用名为" 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();

我可以获得在编写节点后刷新写入器的长度。是否有关于小型或大型节点的流长度的任何优化?

1 个答案:

答案 0 :(得分:1)

XmlTextWriter在内部使用StreamWriter,其默认缓冲区大小为1Kb。

在编写XML时,将使用此StreamWriter编写内容,这只会在其填满或调用Stream时将其缓冲区刷新到基础Flush()

写一个小节点可能无法填充此缓冲区,而写一个大节点可能会这样做。这就是为什么对于大型节点,您会在明确调用MemoryStream之前将数据刷新到Flush()