2010-11-18 12 views
2

Ceci est mon exigence je dois désérialiser un objet, puis je dois faire une analyse syntaxique xml (je sais comment ça sonne)
Voici donc mon codemouvement XmlTextReader pour commencer

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

XElement qListenerParXml = XElement.Load(qListenerPar); 

Quand je essayer de charger le lecteur à nouveau je reçois une exception parce que le curseur du lecteur est à la fin. Ma question est comment puis-je revenir au début?

+1

'new XmlTextReader' est obsolète depuis .NET 2.0. Vous devriez utiliser 'XmlReader.Create' à la place. Vous pouvez ensuite créer le lecteur contre un 'MemoryStream' ou un autre type de flux qui peut être repositionné. –

Répondre

10

XmlTextReader est uniquement en avant, vous ne pouvez pas rembobiner le curseur sur les données.

Vous pouvez le faire en reprenant les données avec une nouvelle instance de XmlTextReader ou en le chargeant comme XmlDocument.

+0

hhhhmmmm ... merci, donc mon autre option est de le charger à nouveau? – UshaP

+1

@UshaP - ou le charger pour un accès aléatoire comme 'XmlDocument'. Avec les classes 'XmlReader' vous obtenez une meilleure perf mais pas d'accès aléatoire. –