为多个XmlReader.Read()用法重置StreamReader

Den*_*ger 4 c# xmlreader streamreader

我想重新使用我与.dad()的XML文件关联的StreamReader - 来自System.Xml.XmlReader的调用.

基本上我已经整理了一个小扩展方法,其中包含以下代码:

 public static string GetValueByPath(this StreamReader str, string attributeName, params string[] nodes)
    {
        str.BaseStream.Position = 0;
        XmlReader reader = XmlReader.Create(str);
        // Stuff happens here now, not important for the question
    }
Run Code Online (Sandbox Code Playgroud)

调用此扩展方法的StreamReader在整个Session中保持不变.

第一次这很好用,但如果我第二次使用这个方法,我会收到一个System.Xml-Exception.有没有办法有效地"重置"StreamReader?

谢谢,

丹尼斯

Tho*_*que 5

您不能只改变其中的位置BaseStream,因为它StreamReader是从底层流缓冲数据.它只会弄乱它的行为StreamReader,没有任何好处会从它出来.

您应该StreamReader每次都处理旧的并创建一个新的.