Vorgehensweise: Abrufen des Shallow-Werts eines Elements (C#)How to: Retrieve the Shallow Value of an Element (C#)

In diesem Thema wird gezeigt, wie Sie den flachen Wert eines Elements abrufen.This topic shows how to get the shallow value of an element. Der flache Wert ist ausschließlich der Wert des jeweiligen Elements, im Gegensatz zum tiefen Wert, der die Werte aller Nachfolgerelemente enthält, die zu einer einzelnen Zeichenkette verkettet werden.The shallow value is the value of the specific element only, as opposed to the deep value, which includes the values of all descendent elements concatenated into a single string.

Beim Abrufen des Elementwerts mithilfe des Umwandlungsverfahrens oder der XElement.Value-Eigenschaft wird der tiefe Wert abgerufen.When you retrieve an element value by using either casting or the XElement.Value property, you retrieve the deep value. Um den flachen Wert abzurufen, können Sie die ShallowValue-Erweiterungsmethode verwenden, wie im folgenden Beispiel gezeigt wird.To retrieve the shallow value, you can use the ShallowValue extension method, as shown in the follwing example. Das Abrufen des flachen Werts ist nützlich, wenn Sie Elemente anhand ihrer Inhalte auswählen möchten.Retrieving the shallow value is useful when you want to select elements based on their content.

Im folgenden Beispiel wird eine Erweiterungsmethode deklariert, die den flachen Wert eines Elements abruft.The following example declares an extension method that retrieves the shallow value of an element. Anschließend wird die Erweiterungsmethode in einer Abfrage verwendet, um alle Elemente aufzulisten, die einen berechneten Wert enthalten.It then uses the extension method in a query to list all elements that contain a calculated value.

BeispielExample

In diesem Beispiel wird die folgende Textdatei, Report.xml, als Quelldatei verwendet.The following text file, Report.xml, is the source for this example.

<?xml version="1.0" encoding="utf-8" ?>  
<Report>  
  <Section>  
    <Heading>  
      <Column Name="CustomerId">=Customer.CustomerId.Heading</Column>  
      <Column Name="Name">=Customer.Name.Heading</Column>  
    </Heading>  
    <Detail>  
      <Column Name="CustomerId">=Customer.CustomerId</Column>  
      <Column Name="Name">=Customer.Name</Column>  
    </Detail>  
  </Section>  
</Report>  
public static class MyExtensions  
{  
    public static string ShallowValue(this XElement xe)  
    {  
        return xe  
               .Nodes()  
               .OfType<XText>()  
               .Aggregate(new StringBuilder(),  
                          (s, c) => s.Append(c),  
                          s => s.ToString());  
    }  
}  

class Program  
{  
    static void Main(string[] args)  
    {  
        XElement root = XElement.Load("Report.xml");  

        IEnumerable<XElement> query = from el in root.Descendants()  
                                      where el.ShallowValue().StartsWith("=")  
                                      select el;  

        foreach (var q in query)  
        {  
            Console.WriteLine("{0}{1}{2}",  
                q.Name.ToString().PadRight(8),  
                q.Attribute("Name").ToString().PadRight(20),  
                q.ShallowValue());  
        }  
    }  
}  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

Column  Name="CustomerId"   =Customer.CustomerId.Heading  
Column  Name="Name"         =Customer.Name.Heading  
Column  Name="CustomerId"   =Customer.CustomerId  
Column  Name="Name"         =Customer.Name  

Siehe auchSee Also

LINQ to XML Axes (C#) (LINQ to XML-Achsen (C#))LINQ to XML Axes (C#)