Exec резюме - Вы хотите:
xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
Первый ответ:
XElement.Descendants
, или это вопрос с подвохом? : P There's an example of usage of Descendants here
Пересмотренный ответ, спасибо Tormod - что-то действительно чувствовал себя неправильно !:
Элементы дает прямые потомки, как вы ищете. Потомки дают полную иерархию [как вы утверждаете, Элементы]. .! (В качестве примера я связан проясняет это Извиняюсь за сумбур
Итак, наконец-то, что вы ищете, (на этот раз в 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")
Каждый из них даст вам 3 `` `элементы по разным причинам, как покрытых РЗМ
(Paste выше непосредственно в LINQPad в режиме VB заявление)
теперь я вижу, что может сбить с толку вас -. при использовании элементов и смотреть у него в визуализаторе вы все еще видя детей: -
Dim parents = xml.Elements
Если вы хотите только фактические имена, вы можете использовать что-то вроде:
Dim parentNames = xml.Elements.Select(function(element) element.Name)
Обратите внимание, что в каждом из этих случаев, вы получаете два результата.
Если вы действительно хотите, чтобы вычистить Детское, вы хотите:
Dim parentElements = xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
Вы можете расширить свой вопрос, чтобы показать, что вы действительно ищете?
Можете ли вы изменить в действительном заклинании, в котором вы закончили использовать? BTW, пожалуйста, скачайте LINQPAd и попробуйте - он отлично подходит для тестирования таких вещей. См. Примеры по адресу http://www.dimecasts.net/Casts/ByTag/LinqPad –