XContainer.Nodes Metoda

Definicja

Zwraca kolekcję węzłów podrzędnych tego elementu lub dokumentu w kolejności dokumentu.

C#
public System.Collections.Generic.IEnumerable<System.Xml.Linq.XNode> Nodes ();

Zwraca

IEnumerable<XNode>

XNode Element IEnumerable<T> zawierający zawartość tego XContainerelementu w kolejności dokumentu.

Przykłady

Poniższy przykład tworzy drzewo XML z różnymi typami węzłów. Następnie wysyła zapytanie do tej metody osi, aby wyliczyć i wydrukować węzły.

C#
XElement xmlTree = new XElement("Root",  
    new XElement("Child1", 1),  
    new XElement("Child2", 2),  
    new XComment("a comment"),  
    new XElement("Child3", 3),  
    new XElement("Child4", 4),  
    new XText("mixed content"),  
    new XElement("Child5", 5)  
);  
IEnumerable<XNode> nodes =  
    from nd in xmlTree.Nodes()  
    select nd;  
foreach (XNode node in nodes)  
    Console.WriteLine(node);  

Ten przykład generuje następujące wyniki:

<Child1>1</Child1>  
<Child2>2</Child2>  
<!--a comment-->  
<Child3>3</Child3>  
<Child4>4</Child4>  
mixed content  
<Child5>5</Child5>  

Poniższy przykład tworzy drzewo XML, które zawiera różne typy węzłów. Następnie wylicza fragmenty drzewa, drukuj typy węzłów.

C#
XDocument xmlTree = new XDocument(  
    new XComment("a comment"),  
    new XProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"hello.xsl\""),  
    new XElement("Root",  
        new XAttribute("Att", "attContent"),  
        new XElement("Child1",  
            new XCData("CDATA content")  
        ),  
        new XElement("Child2",  
            new XText("Text content")  
        )  
    )  
);  

foreach (XNode node in xmlTree.Nodes())  
{  
    Console.WriteLine(node.NodeType);  
    if (node.NodeType == XmlNodeType.Element)  
    {  
        foreach (XAttribute att in ((XElement)node).Attributes())  
            Console.WriteLine(att.NodeType);  
        foreach (XNode node2 in ((XElement)node).Nodes())  
        {  
            Console.WriteLine(node2.NodeType);  
            if (node2.NodeType == XmlNodeType.Element)  
                foreach (XNode node3 in ((XElement)node2).Nodes())  
                    Console.WriteLine(node3.NodeType);  
        }  
    }  
}  

Uwagi

Należy pamiętać, że zawartość nie zawiera atrybutów. W LINQ to XML atrybuty nie są uważane za węzły drzewa. Są to pary nazwa/wartość skojarzone z elementem.

Ta metoda używa odroczonego wykonania.

Dotyczy

Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Zobacz też