如果我使用XMLReader.Create并将其传递给流,那么即使在调用任何读取方法之前,XMLReader似乎也会读取整个流,因为流的position属性会更改以匹配流的长度。 XMLReader然后将整个xml存储在内存中吗?它看起来像我可以调用XmlReader.Read并且流位置永远不会改变。 XmlReader是否可以不使用整个流?
答案 0 :(得分:2)
XmlReader
不会立即读取整个流,它只会从流中读取(最多)8192个字节的块(如果Async
设置为true,则会更多)和存储它们在内部字节缓冲区中。显然,如果您的流的字节数少于该字节,它将在第一次Read()
调用时读取所有字节。这可能是您遇到的情况。