sintesi Exec - desideri:
xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
Prima risposta:
XElement.Descendants
, o è una domanda trabocchetto? : P There's an example of usage of Descendants here
risposta riveduta, grazie Tormod - qualcosa che si sentiva male !:
Elementi dà discendenti diretti, come si sta cercando. I discendenti danno la gerarchia completa [come si asserisce che gli Elementi lo facciano]. .! (L'esempio che ho legato alla chiarisce questo punto Ci scusiamo per la confusione
Così, finalmente, quello che stai cercando è (questa volta in 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")
Ognuno dei quali produrrà voi il 3 `` `elementi per diversi motivi contemplati nelle REM
(pasta di quanto sopra direttamente in LINQPad in modalità dichiarazione VB)
ora vedo che cosa potrebbe si essere fonte di confusione -. quando si utilizza Elements e guardo a questo in un visualizzatore, sei ancora vedere i bambini: -
Dim parents = xml.Elements
Se desideri solo i nomi reali, si può usare qualcosa di simile a:
Dim parentNames = xml.Elements.Select(function(element) element.Name)
Si noti che in ognuno di questi casi, si stanno ottenendo due risultati.
Se davvero si vuole mettere a nudo le chidren, si vuole:
Dim parentElements = xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
Puoi estendere la vostra domanda per mostrare ciò che siete veramente cercando?
Puoi modificare l'incantesimo che hai utilizzato? Per favore, scarica LINQPAd e provalo, è ottimo per testare cose del genere. Vedi esempi su http://www.dimecasts.net/Casts/ByTag/LinqPad –