Domanda

Ho un oggetto XslCompiledTransform, e voglio che l'output in un oggetto XmlReader, come ho bisogno di passare attraverso un secondo foglio di stile. Sto diventando un po 'confuso - posso trasformare con successo un po' di XML e leggerlo utilizzando un StreamReader o un XmlDocument, ma quando provo un XmlReader, non ottengo niente.

Nell'esempio sottostante, stylesheet è il mio oggetto XslCompiledTransform. La prima uscita di due chiamate Console.WriteLine il corretto XML trasformato, ma la terza chiamata non dà XML. Sto indovinando potrebbe essere che il XmlTextReader si aspetta di testo, quindi forse ho bisogno di avvolgere questo in uno StreamReader ..? Che cosa sto facendo di sbagliato?

MemoryStream transformed = new MemoryStream();
stylesheet.Transform(input, args, transformed);
transformed.Position = 0;

StreamReader s = new StreamReader(transformed);
Console.WriteLine("s = " + s.ReadToEnd()); // writes XML
transformed.Position = 0;

XmlDocument doc = new XmlDocument();
doc.Load(transformed);
Console.WriteLine("doc = " + doc.OuterXml); // writes XML
transformed.Position = 0;

XmlReader reader = new XmlTextReader(transformed);
Console.WriteLine("reader = " + reader.ReadOuterXml()); // no XML written
scroll top