XSLCompiledTransformの出力をXMLReaderに入れるにはどうすればよいですか?
-
24-10-2019 - |
質問
を持っています XslCompiledTransform
オブジェクト、そして私はanの出力が欲しい XmlReader
オブジェクト、私はそれを2番目のスタイルシートに渡す必要があるので。私は少し混乱しています - 私はいくつかのXMLを正常に変換し、どちらかを使用してそれを読むことができます StreamReader
または XmlDocument
, 、しかし、私が試すとき XmlReader
, 、私は何も得ません。
以下の例では、 stylesheet
私です XslCompiledTransform
物体。最初の二つ Console.WriteLine
コールは正しい変換されたXMLを出力しますが、3回目の呼び出しはXMLを与えません。私はそれがそうかもしれないと思います XmlTextReader
テキストが期待されているので、これをストリームリーダーに包む必要があるかもしれません。私は何が間違っているのですか?
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
解決
XmlReader.ReadOuterXml
メソッドはXMLを読み取ります 現在のノード. 。最初に読者を作成するとき、現在のノードはありませんので、 ReadOuterXml
何も返されません。
行を追加する場合:
reader.Read();
...の前に ReadOuterXml()
電話して、それはあなたが期待どおりに機能します。
PS通常、次の結果をテストする必要があります Read()
読者が実際に読むものを確実に持っていることを確認する方法。
所属していません StackOverflow