Поделиться через


XElement.DescendantNodesAndSelf Метод

Определение

Возвращает коллекцию узлов, содержащих данный элемент или являющихся его потомками, в порядке их следования в документе.

public:
 System::Collections::Generic::IEnumerable<System::Xml::Linq::XNode ^> ^ DescendantNodesAndSelf();
public System.Collections.Generic.IEnumerable<System.Xml.Linq.XNode> DescendantNodesAndSelf ();
member this.DescendantNodesAndSelf : unit -> seq<System.Xml.Linq.XNode>
Public Function DescendantNodesAndSelf () As IEnumerable(Of XNode)

Возвращаемое значение

IEnumerable<T> для XNode, содержащий этот элемент и все узлы-потомки этого элемента в порядке следования документов.

Примеры

В следующем примере создается XML-дерево, а затем используется .

XElement xmlTree = new XElement("Root",
    // Attributes are not nodes, so will not be returned by DescendantNodesAndSelf.
    new XAttribute("Att1", "AttributeContent"),
    new XElement("Child",
        new XText("Some text"),
        new XElement("GrandChild", "element content")
    )
);
IEnumerable<XNode> dnas =
    from node in xmlTree.DescendantNodesAndSelf()
    select node;
foreach (XNode node in dnas)
{
    if (node is XElement)
        Console.WriteLine((node as XElement).Name);
    else
        Console.WriteLine(node);
}
Dim xmlTree As XElement = _
    <Root Att1="AttributeContent">
        <Child>Some text<GrandChild>element content</GrandChild>
        </Child>
    </Root>

Dim dnas As IEnumerable(Of XNode) = _
    From node In xmlTree.DescendantNodesAndSelf() _
    Select node

For Each node In dnas
    If TypeOf node Is XElement Then
        Console.WriteLine(DirectCast(node, XElement).Name)
    Else
        Console.WriteLine(node)
    End If
Next

В этом примере выводятся следующие данные:

Root
Child
Some text
GrandChild
element content

Комментарии

Этот метод использует отложенное выполнение.

Применяется к

См. также раздел