Ich verwende C# und LINQ, um mein XDocument zu durchlaufen.LINQ über XML: finden Sie die oberste Ebene
Können sagen, ich XML wie dieses:
<Root>
<Element ID="1">
<Element ID="2">
<Element ID="3" />
...
</Element>
<Element ID="50">
...
</Element>
</Element>
<Element ID="x">
...
</Element>
</Root>
Lassen Sie uns jetzt sagen, ich habe die ID 3 und verwalten das Element mit dieser ID zu finden. An dieser Stelle möchte ich die ID des obersten Elternknotens finden (dessen Elternteil eine Ebene unterhalb der Wurzel liegt). In diesem Fall möchte ich mit ID das Element finden 1. Ich kann dies tun:
myElement.Parent.Parent
Aber ich weiß nicht, wie viele Ebenen nach oben könnte es sein - so wohl ich brauche Rekursion. Ich erinnere mich jedoch, dass XDocument nur vorwärts gelesen wird. Wie teuer ist es, den Parent rekursiv zu finden? Was ist der beste Weg, dies zu tun?
Meine XML-Dateien könnten bis zu 500k groß sein.
Ich habe ein LINQ-Buch hier und es sagt, dass XNode intern eine einfach verknüpfte Liste verwendet, also PreviousNode aufrufen ist nonperformant. Ich war besorgt, dass Parent auch ähnlich unperformant sein könnte. –
Richtig - nein, ich glaube nicht, dass das der Fall ist. Probieren Sie es auf dem größten Dokument, das Sie wahrscheinlich sehen, und Zeit es :) –