我遇到了.Net Framework 3.5和System.Xml.XmlReader類的一個不尋常的問題。Odd behavior with XmlReader.Read and Stream.Read
在我的應用程序調用XmlReader.Read方法之前,它首先使用Stream.Read方法爲記錄目的讀取流的內容。然後在調用Stream.Read之前,它會回到流的開頭。當我這樣做,我收到以下錯誤:
Unhandled Exception: System.Xml.XmlException: Unexpected end of file while parsing Name has occurred. Line 1, position 4097.
然而,如果我叫XmlReader.Read,尋求到流的開頭,然後調用Stream.Read方法這一切工作正常。然而,這似乎只發生在大流上。我剛剛看過大約2000個字符的系統,它工作正常嗎?
我已經在下面的代碼示例中給出了我在做什麼的想法。
XmlReaderSettings readerSettings = new XmlReaderSettings();
readerSettings.Schemas.Add(null, args[1]);
readerSettings.ValidationType = ValidationType.Schema;
readerSettings.ValidationEventHandler += new ValidationEventHandler(XmlValidatingReaderValidationEventHandler);
XmlReader reader = XmlReader.Create(fileReader, readerSettings);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
string content = System.Text.UTF8Encoding.UTF8.GetString(buffer, 0, buffer.Length);
fs.Seek(0, SeekOrigin.Begin);
while(reader.Read());
Console.WriteLine("Done");
感謝
謝謝,它奇怪的是,只是讀一個流,然後返回到開始會像這樣搞砸了。我已經做了另一個使用具有相同結果的內存流。我在C++中做過類似的工作,但工作正常嗎? – 2011-04-26 16:00:59