.Net Framework 3.5 및 System.Xml.XmlReader 클래스에 비정상적인 문제가 발생했습니다.XmlReader.Read 및 Stream.Read의 이상한 동작
응용 프로그램이 XmlReader.Read 메서드를 호출하기 전에 먼저 Stream.Read 메서드를 사용하여 로깅 목적으로 스트림 내용을 읽습니다. 그런 다음 Stream.Read를 호출하기 전에 스트림의 시작 부분을 찾습니다. 나는이 작업을 수행 할 때 나는 다음과 같은 오류가 점점 오전 : 그러나 나는 XmlReader.Read를 호출하면
Unhandled Exception: System.Xml.XmlException: Unexpected end of file while parsing Name has occurred. Line 1, position 4097.
, 모든 것이 잘 작동 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");
감사
XmlReader
이
Stream
에서 데이터를 버퍼링 때문이다
고마워요. 스트림을 읽은 다음 시작으로 돌아가는 것이 이렇게 엉망이 되더라도 이상합니다. 동일한 결과를 가진 메모리 스트림을 사용하여 다른 작업을 수행했습니다. 나는 C++에서 비슷한 것을했는데 그 전에는 잘 돌아갔다. –