2010-11-18 9 views
2

Dies ist meine Anforderung i ein Objekt deserialisieren müssen und dann muss ich einige XML tun Parsen (ich weiß, wie es sich anhört)
So, hier ist mein CodeXmlTextReader Bewegung zu starten

XmlTextReader myFileReader = new XmlTextReader(path); 
XmlSerializer serializer = new XmlSerializer(typeof(MyType)); 
MyType par = serializer.Deserialize(myFileReader) as MyType; 

XElement qListenerParXml = XElement.Load(qListenerPar); 

Wenn i versuchen Sie den Leser erneut zu laden, ich bekomme eine Ausnahme, weil der Leser-Cursor am Ende ist. Meine Frage ist, wie kann ich es an den Anfang zurückgeben?

+1

'neuer XmlTextReader' ist seit .NET 2.0 veraltet. Sie sollten stattdessen 'XmlReader.Create' verwenden. Sie können den Reader dann gegen einen 'MemoryStream' oder einen anderen Stream erstellen, der neu positioniert werden kann. –

Antwort

10

XmlTextReader ist nur vorwärts, Sie können den Cursor nicht auf die Daten zurückspulen.

Sie können dies tun, indem Sie die Daten erneut mit einer neuen Instanz von XmlTextReader durchsuchen, oder indem Sie sie als XmlDocument laden.

+0

hhhhmmmmm ... danke, also ist meine andere Möglichkeit, es wieder zu laden? – UshaP

+1

@UshaP - oder laden Sie es für den wahlfreien Zugriff als 'XmlDocument'. Mit den 'XmlReader' Klassen erhalten Sie bessere Performance, aber keinen wahlfreien Zugriff. –