5

XDocument インスタンスが与えられた場合、そのインスタンスを表す TextReader を簡単に取得するにはどうすればよいですか?

私が思いついた最高のものは、次のようなものです(どこxmlに XDocument インスタンスがあります):

var s = new MemoryStream();
var sw = new StreamWriter(s);

xml.Save(sw);

sw.Flush();
s.Position = 0;

TextReader tr = new StreamReader(s);

しかし、これは少し不格好に思えるので、もっと簡単な方法はないかと考えていました。


編集

上記の例は、インスタンス全体を XML 文字列に変換し、その文字列に対して TextReader を作成することと同じです。

コンテンツ全体をメモリに読み込むよりも、ストリームのような方法があるかどうか疑問に思っていました。

4

2 に答える 2

4
  TextReader tr = new StringReader(xml.ToString());
于 2010-04-09T14:38:35.717 に答える
0

試したことはありませんが、メソッドがありXNode.WriteTo(XmlWriter)ます。これを渡してXmlTextWriter、テキスト表現を取得できます。これはおそらく書くのにいくらか多くのコードを必要としますが、あなたが要求したようにそれはより「ストリームのような」はずです:-)

[編集:]さらに簡単:XNode.CreateReader()あなたに。を与える方法がありますXmlReader。テキストへの変換は自分で処理する必要があります。

于 2010-04-09T14:56:20.013 に答える