Mit Linq und XDocument kann ich alle untergeordneten Elemente unter dem übergeordneten Tag abrufen?

8

Ich habe ein XML

%Vor%

Mit Linq und XDocument kann ich "Zusammenfassung" Informationen extrahieren, aber wie kann ich "Konto" Informationen unter "Zusammenfassung" extrahieren?

%Vor%

Wie kann ich etwas wie " summary/account " angeben, damit es mir alle Elemente unter <summary> zurückgibt? Beachten Sie, dass ich <account> unter <detail><accounts> habe, ich möchte nur die Elemente unter dem Summary-Tag.

Bearbeiten: (Lösung von Andrew)

%Vor%     
Sri Reddy 25.04.2011, 16:14
quelle

2 Antworten

18

Sie sollten die Methode Elements verwenden:

%Vor%

Oder alternativ XPathSelectElements , was in diesem Fall einfacher ist:

%Vor%

In diesem Fall können Sie auch Descendants verwenden, wie Andrew Barber vorgeschlagen hat, aber im Allgemeinen sollten Sie dies nur tun, wenn Sie wirklich alle Nachkommen mit einem bestimmten Namen und nicht nur die unmittelbaren Kinder suchen wollen. Andernfalls führt Ihr Code viele Suchen durch, die er nicht benötigt, und kann Elemente zurückgeben, die er nicht haben soll.

    
Robert Rossney 25.04.2011, 16:28
quelle
3
%Vor%

Damit erhalten Sie eine Sammlung der Elemente account unter dem Element summary . Sie können sie dann iterieren, um die Werte zu erhalten.

BEARBEITET, das gleiche Muster wie Sie zu verwenden; Ich rufe First() anstelle von FirstOrDefault() auf, da dieser Code sowieso nicht ausgeführt wird, wenn das Element "account" nicht gefunden wird.

Dann haben Sie die richtige Idee, wenn Sie über die zurückgegebene Sammlung iterieren.

    
Andrew Barber 25.04.2011 16:18
quelle

Tags und Links