ツリー構造を維持しながら、LINQ(ストリーミングのみ)を使用して、深くネストされたXMLをフィルター処理するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1027815

  •  06-07-2019
  •  | 
  •  

質問

LINQを使用して非常に大きく、深くネストされたXMLドキュメントをストリーミングし、ストリーミングしながら、いくつかの基準に基づいてノードをフィルターし、同じ元の構造を維持しながらストリーミング出力をファイルに書き込む方法を知りたいXMLの。

これは、ドキュメント全体をメモリにロードせずに発生するはずです。

これは可能ですか?

役に立ちましたか?

解決 2

このペーパーには私の質問への回答が含まれています。

http://homepages.cwi.nl/~ralf/api- streaming-xml /

具体的には、ストリーミング中に結果をフィルタリングするときに元のXMLのツリー構造を維持する方法を示します。

他のヒント

LINQ to XMLはストリーミング形式での直接読み取りをサポートしていませんが、 XmlReader を使用し、 that に基づいてフィルタリングしてから成功することに成功しました。私が XElement.Load に興味のあるサブツリーを発見しました。サブツリーはメモリに収まるほど小さいと仮定しています。 Load が戻ると、リーダーはそのサブツリーを越えて移動しているので、次の関連するサブツリーなどが見つかるまで続行できます。

詳細とサンプルコードについては、このMSDNブログ投稿をご覧ください。

(これは、Stack Overflowデータダンプで行ったことです。btw:)

XMLストリーミングオプションについては、 http://blogs.msdn.com/xmlteam/archive/2007/03/05/streaming-with-linq-to-xml- part-1.aspx 。初期のブログシリーズであり、最終リリースで実装の詳細が変更されたことを認識してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top