Vorgehensweise: Suchen nach Nachfolgern mit einem bestimmten Elementnamen (C#)How to: Find Descendants with a Specific Element Name (C#)

Es kann vorkommen, dass Sie alle Nachfolgerelemente mit einem bestimmten Namen ermitteln möchten.Sometimes you want to find all descendants with a particular name. Dazu könnten Sie Code schreiben, der alle Nachfolgerelemente durchläuft, einfacher ist es aber, die Descendants-Achse zu verwenden.You could write code to iterate through all of the descendants, but it is easier to use the Descendants axis.

BeispielExample

Im folgenden Beispiel wird gezeigt, wie Sie Nachfolgerelemente anhand des Elementnamens ermitteln können:The following example shows how to find descendants based on the element name.

XElement root = XElement.Parse(@"<root>  
  <para>  
    <r>  
      <t>Some text </t>  
    </r>  
    <n>  
      <r>  
        <t>that is broken up into </t>  
      </r>  
    </n>  
    <n>  
      <r>  
        <t>multiple segments.</t>  
      </r>  
    </n>  
  </para>  
</root>");  
IEnumerable<string> textSegs =  
    from seg in root.Descendants("t")  
    select (string)seg;  

string str = textSegs.Aggregate(new StringBuilder(),  
    (sb, i) => sb.Append(i),  
    sp => sp.ToString()  
);  

Console.WriteLine(str);  

Dieser Code erzeugt die folgende Ausgabe:This code produces the following output:

Some text that is broken up into multiple segments.  

BeispielExample

Im folgenden Beispiel wird dieselbe Abfrage für XML in einem Namespace gezeigt.The following example shows the same query for XML that is in a namespace. Weitere Informationen finden Sie unter Working with XML Namespaces (C#) (Arbeiten mit XML-Namespaces (C#)).For more information, see Working with XML Namespaces (C#).

XElement root = XElement.Parse(@"<root xmlns='http://www.adatum.com'>  
  <para>  
    <r>  
      <t>Some text </t>  
    </r>  
    <n>  
      <r>  
        <t>that is broken up into </t>  
      </r>  
    </n>  
    <n>  
      <r>  
        <t>multiple segments.</t>  
      </r>  
    </n>  
  </para>  
</root>");  
XNamespace ad = "http://www.adatum.com";  
IEnumerable<string> textSegs =  
    from seg in root.Descendants(ad + "t")  
    select (string)seg;  

string str = textSegs.Aggregate(new StringBuilder(),  
    (sb, i) => sb.Append(i),  
    sp => sp.ToString()  
);  

Console.WriteLine(str);  

Dieser Code erzeugt die folgende Ausgabe:This code produces the following output:

Some text that is broken up into multiple segments.  

Siehe auchSee Also

Descendants
Basic Queries (LINQ to XML) (C#) (Standardabfragen (LINQ to XML) (C#))Basic Queries (LINQ to XML) (C#)