Exec Podsumowanie - chcesz:
xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
pierwsza odpowiedź:
XElement.Descendants
, czy jest to podchwytliwe pytanie? : P There's an example of usage of Descendants here
Zmieniona odpowiedź, dzięki Tormod - coś czułem się źle !:
Elements daje bezpośrednich potomków, jak szukasz. Potomkowie podają pełną hierarchię [tak jak twierdzisz, że Elementy]. .! (Przykład I związana sprawia, że ten wyraźny Przepraszamy za zamieszanie
Więc wreszcie, czego szukasz (tym razem w VB):
Dim xml = <Root>
<Parent id="1">
<Child>Thomas</Child>
</Parent>
<Parent id="2">
<Child>Tim</Child>
<Child>Jamie</Child>
</Parent>
</Root>
REM All nodes two levels down in the hierarchy
Dim level2Nodes = xml.Elements.SelectMany(function(element) element.Elements)
level2Nodes.Dump
REM All Child nodes, no matter where they are:
Dim children = xml.Descendants("Child")
z których każdy będzie cię otrzymując 3 `` `elementy różnych powodów, o których mowa w Rems
(wklej powyżej bezpośrednio do LINQPad w trybie wyciągu VB)
teraz widzę, co może być mylące cię. - podczas korzystania z elementów i wygląd w wizualizatorze wciąż jesteś widząc dzieci: -
Dim parents = xml.Elements
Jeśli chcesz tylko rzeczywiste nazwy, można użyć coś takiego:
Dim parentNames = xml.Elements.Select(function(element) element.Name)
pamiętać, że w każdym z tych przypadków, dostajesz dwa wyniki.
Jeśli naprawdę chce się rozebrać na zewnątrz chidren, chcesz:
Dim parentElements = xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
można rozszerzyć swoje pytanie, aby zobaczyć to, czego naprawdę szukasz?
Czy możesz edytować w prawdziwej inkantacji, której używałeś? BTW proszę pobrać LINQPAd i wypróbować - świetnie nadaje się do testowania takich rzeczy. Zobacz przykłady na http://www.dimecasts.net/Casts/ByTag/LinqPad –