2009-03-20 8 views
1

私はXDocumentをトラバースするためにC#とLINQを使用しています。XMLを介したLINQ:トップレベルの親を見つける

<Root> 
    <Element ID="1"> 
    <Element ID="2"> 
     <Element ID="3" /> 
     ... 
    </Element> 
    <Element ID="50"> 
     ... 
    </Element> 
    </Element> 
    <Element ID="x"> 
    ... 
    </Element> 
</Root> 

今度は、私はID 3を持っているし、そのIDを持つ要素を見つけるために管理しましょう:

は、私はこのようなXMLを考えてみましょう。この時点で、トップレベルの親ノード(ルートの1レベル下にある親ノード)のIDを探したいと思います。 - 私はおそらく必要

myElement.Parent.Parent

しかし、私はそれがあるかもしれないどのように多くのレベルアップを知らない:このインスタンスでは、私はこれを行うことができ、ID 1を持つ要素を見つけたいです再帰。しかし、私は、XDocumentが前方に読み込まれていることを思い出しています。 Parentを再帰的に見つけるのはどれくらいの費用がかかりますか?これを行う最善の方法は何ですか?

私のXMLファイルは最大500kになる可能性があります。

答えて

1

いいえ、XDocumentは転送専用ではありません。あなたはXStreamingElementを考えていますか?

私は親がXObjectの一部としてフィールドとして格納されていると思うので、再帰的にフェッチするのは安いです。

+0

ここにLINQの本があり、XNodeが内部でリンクされたリストを使用しているため、PreviousNodeを呼び出すことができません。私は親も同様に不適格かもしれないと心配しました。 –

+0

右 - いいえ、私はそれが事実だとは思わない。あなたが見る可能性のある最大の文書で試してみてください。 –

関連する問題