XContainer.Nodes Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca kolekcję węzłów podrzędnych tego elementu lub dokumentu w kolejności dokumentu.
public:
System::Collections::Generic::IEnumerable<System::Xml::Linq::XNode ^> ^ Nodes();
public System.Collections.Generic.IEnumerable<System.Xml.Linq.XNode> Nodes ();
member this.Nodes : unit -> seq<System.Xml.Linq.XNode>
Public Function Nodes () As IEnumerable(Of XNode)
Public Iterator Function Nodes () As IEnumerable(Of XNode)
Zwraca
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.
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);
Dim xmlTree As XElement = _
<Root>
<Child1>1</Child1>
<Child2>2</Child2>
<!--a comment-->
<Child3>3</Child3>
<Child4>4</Child4>mixed content<Child5>5</Child5>
</Root>
Dim nodes = From nd In xmlTree.Nodes() _
Select nd
For Each node In nodes
Console.WriteLine(node)
Next
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.
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);
}
}
}
Dim xmlTree As XDocument = _
<?xml version="1.0" encoding="utf-8"?>
<!--a comment-->
<?xml-stylesheet type='text/xsl' href='hello.xsl'?>
<Root Att="attContent">
<Child1><![CDATA[CDATA content]
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.