XContainer.Nodes Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce un insieme dei nodi figlio di questo elemento o documento, in ordine di documento.
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)
Valori restituiti
Oggetto IEnumerable<T> contenente XNode il contenuto di , XContainernell'ordine del documento.
Esempio
Nell'esempio seguente viene creato un albero XML con diversi tipi di nodi. Esegue quindi una query su questo metodo dell'asse per enumerare e stampare i nodi.
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
In questo esempio viene generato l'output seguente:
<Child1>1</Child1>
<Child2>2</Child2>
<!--a comment-->
<Child3>3</Child3>
<Child4>4</Child4>
mixed content
<Child5>5</Child5>
Nell'esempio seguente viene creato un albero XML contenente un'ampia gamma di tipi di nodi. Enumera quindi le parti dell'albero, stampando i tipi di nodo.
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]]></Child1>
<Child2>Text content</Child2>
</Root>
' Note that XNode uses XmlNodeType, which is in the System.Xml namespace
For Each node In xmlTree.Nodes
Console.WriteLine(node.NodeType.ToString())
If node.NodeType = XmlNodeType.Element Then
For Each att In DirectCast(node, XElement).Attributes
Console.WriteLine(att.NodeType.ToString())
Next
For Each node2 In DirectCast (node, XElement).Nodes()
Console.WriteLine(node2.NodeType.ToString())
If node2.NodeType = XmlNodeType.Element Then
For Each node3 In DirectCast (node2, XElement).Nodes
Console.WriteLine(node3.NodeType.ToString())
Next
End If
Next
End If
Next
In questo esempio viene generato l'output seguente:
Comment
ProcessingInstruction
Element
Attribute
Element
CDATA
Element
Text
Commenti
Si noti che il contenuto non include attributi. In LINQ to XML gli attributi non vengono considerati nodi dell'albero. Sono coppie nome/valore associate a un elemento.
Questo metodo usa l'esecuzione posticipata.