Extensions.DescendantNodes<T>(IEnumerable<T>) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Kaynak koleksiyondaki her belge ve öğenin alt düğümlerinden oluşan bir koleksiyon döndürür.
public:
generic <typename T>
where T : System::Xml::Linq::XContainer[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<System::Xml::Linq::XNode ^> ^ DescendantNodes(System::Collections::Generic::IEnumerable<T> ^ source);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XNode> DescendantNodes<T> (this System.Collections.Generic.IEnumerable<T> source) where T : System.Xml.Linq.XContainer;
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XNode> DescendantNodes<T> (this System.Collections.Generic.IEnumerable<T?> source) where T : System.Xml.Linq.XContainer;
static member DescendantNodes : seq<'T (requires 'T :> System.Xml.Linq.XContainer)> -> seq<System.Xml.Linq.XNode> (requires 'T :> System.Xml.Linq.XContainer)
<Extension()>
Public Function DescendantNodes(Of T As XContainer) (source As IEnumerable(Of T)) As IEnumerable(Of XNode)
Tür Parametreleri
- T
içindeki nesnelerinin source
türü ile kısıtlanır XContainer.
Parametreler
- source
- IEnumerable<T>
XContainer Kaynak IEnumerable<T> koleksiyonu içeren bir.
Döndürülenler
XNode Kaynak koleksiyondaki her belge ve öğenin alt düğümlerinden biriIEnumerable<T>.
Örnekler
Aşağıdaki örnek, iki öğeden oluşan bir koleksiyonu alır ve ardından kaynak koleksiyondaki her öğe için tüm alt düğümlerden oluşan bir koleksiyonu alır. öğesinin özniteliğinin GrandChild
düğüm olarak gösterilmediğini unutmayın.
XElement xmlTree = XElement.Parse(
@"<Root>
<Child>aaa<GrandChild anAttribute='xyz'>Text</GrandChild>
<!--a comment-->
<?xml-stylesheet type='text/xsl' href='test.xsl'?>
</Child>
<Child>ccc<GrandChild>Text</GrandChild>ddd</Child>
</Root>");
IEnumerable<XNode> nodes =
from node in xmlTree.Elements("Child").DescendantNodes()
select node;
foreach (XNode node in nodes)
{
switch (node.NodeType)
{
case XmlNodeType.Element:
Console.WriteLine("Element: {0}", ((XElement)node).Name);
break;
case XmlNodeType.Text:
Console.WriteLine("Text: {0}", ((XText)node).Value);
break;
case XmlNodeType.Comment:
Console.WriteLine("Comment: {0}", ((XComment)node).Value);
break;
case XmlNodeType.ProcessingInstruction:
Console.WriteLine("PI: {0}", ((XProcessingInstruction)node).Data);
break;
}
}
Dim xmlTree As XElement = _
<Root>
<Child>aaa<GrandChild anAttribute='xyz'>Text</GrandChild>
<!--a comment-->
<?xml-stylesheet type='text/xsl' href='test.xsl'?>
</Child>
<Child>ccc<GrandChild>Text</GrandChild>ddd</Child>
</Root>
Dim nodes As IEnumerable(Of XNode) = _
From node In xmlTree.<Child>.DescendantNodes _
Select node
For Each node As XNode In nodes
Select Case node.NodeType
Case XmlNodeType.Element
Console.WriteLine("Element: {0}", DirectCast(node, XElement).Name)
Case XmlNodeType.Text
Console.WriteLine("Text: {0}", DirectCast(node, XText).Value)
Case XmlNodeType.Comment
Console.WriteLine("Comment: {0}", DirectCast(node, XComment).Value)
Case XmlNodeType.ProcessingInstruction
Console.WriteLine("PI: {0}", DirectCast(node, XProcessingInstruction).Data)
End Select
Next
Bu örnek aşağıdaki çıkışı oluşturur:
Text: aaa
Element: GrandChild
Text: Text
Comment: a comment
PI: type='text/xsl' href='test.xsl'
Text: ccc
Element: GrandChild
Text: Text
Text: ddd
Aşağıda da aynı örnek verilmiştir, ancak bu örnekte XML bir ad alanındadır. Daha fazla bilgi için bkz . XML Ad Alanlarıyla Çalışma.
XNamespace aw = "http://www.adventure-works.com";
XElement xmlTree = XElement.Parse(
@"<Root xmlns='http://www.adventure-works.com'>
<Child>aaa<GrandChild anAttribute='xyz'>Text</GrandChild>
<!--a comment-->
<?xml-stylesheet type='text/xsl' href='test.xsl'?>
</Child>
<Child>ccc<GrandChild>Text</GrandChild>ddd</Child>
</Root>");
IEnumerable<XNode> nodes =
from node in xmlTree.Elements(aw + "Child").DescendantNodes()
select node;
foreach (XNode node in nodes)
{
switch (node.NodeType)
{
case XmlNodeType.Element:
Console.WriteLine("Element: {0}", ((XElement)node).Name);
break;
case XmlNodeType.Text:
Console.WriteLine("Text: {0}", ((XText)node).Value);
break;
case XmlNodeType.Comment:
Console.WriteLine("Comment: {0}", ((XComment)node).Value);
break;
case XmlNodeType.ProcessingInstruction:
Console.WriteLine("PI: {0}", ((XProcessingInstruction)node).Data);
break;
}
}
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim xmlTree As XElement = _
<Root>
<Child>aaa<GrandChild anAttribute='xyz'>Text</GrandChild>
<!--a comment-->
<?xml-stylesheet type='text/xsl' href='test.xsl'?>
</Child>
<Child>ccc<GrandChild>Text</GrandChild>ddd</Child>
</Root>
Dim nodes As IEnumerable(Of XNode) = _
From node In xmlTree.<Child>.DescendantNodes _
Select node
For Each node As XNode In nodes
Select Case node.NodeType
Case XmlNodeType.Element
Console.WriteLine("Element: {0}", DirectCast(node, XElement).Name)
Case XmlNodeType.Text
Console.WriteLine("Text: {0}", DirectCast(node, XText).Value)
Case XmlNodeType.Comment
Console.WriteLine("Comment: {0}", DirectCast(node, XComment).Value)
Case XmlNodeType.ProcessingInstruction
Console.WriteLine("PI: {0}", DirectCast(node, XProcessingInstruction).Data)
End Select
Next
End Sub
End Module
Bu örnek aşağıdaki çıkışı oluşturur:
Text: aaa
Element: {http://www.adventure-works.com}GrandChild
Text: Text
Comment: a comment
PI: type='text/xsl' href='test.xsl'
Text: ccc
Element: {http://www.adventure-works.com}GrandChild
Text: Text
Text: ddd
Açıklamalar
Bu eksen uzantısı yöntemi ve XElement nesnelerinde XDocument kullanılır. Bu türlerin her ikisi de türünden XContainertüretilir, bu nedenle bu yöntem kaynak koleksiyonu içeren bir IEnumerable<T> XContainer yöntemi üzerinde çalışır.
Visual Basic alt öğeler için tümleşik bir XML eksenine sahip olsa da, alt düğümler için tümleşik bir eksen yoktur, bu nedenle Visual Basic kullanıcıların bu eksen yöntemini açıkça kullanması gerekir.
Bu yöntem ertelenmiş yürütmeyi kullanır.