Funktionale Konstruktion (LINQ to XML) (C#)Functional Construction (LINQ to XML) (C#)

LINQ to XML bietet mit der funktionalen Konstruktion eine leistungsfähige Möglichkeit zur Erstellung von XML-Elementen. provides a powerful way to create XML elements called functional construction. Funktionale Konstruktion ist die Fähigkeit, eine XML-Struktur in einer einzelnen Anweisung zu erstellen.Functional construction is the ability to create an XML tree in a single statement.

Es gibt mehrere wichtige Features der LINQ to XML-Programmierschnittstelle, die für die funktionale Konstruktion verantwortlich sind:There are several key features of the LINQ to XML programming interface that enable functional construction:

  • Der XElement-Konstruktor akzeptiert verschiedene Argumentarten als Inhalt.The XElement constructor takes various types of arguments for content. So können Sie z. B. ein anderes XElement-Objekt übergeben, das zu einem untergeordneten Element wird.For example, you can pass another XElement object, which becomes a child element. Sie können auch ein XAttribute-Objekt übergeben, das zu einem Attribut des Elements wird.You can pass an XAttribute object, which becomes an attribute of the element. Oder Sie übergeben ein beliebiges anderes Objekt, das in eine Zeichenfolge konvertiert wird und zum Textinhalt des Elements wird.Or you can pass any other type of object, which is converted to a string and becomes the text content of the element.

  • Der XElement-Konstruktor verwendet ein params-Array vom Typ Object, sodass Sie beliebig viele Objekte an den Konstruktor übergeben können.The XElement constructor takes a params array of type Object, so that you can pass any number of objects to the constructor. Auf diese Weise können Sie ein Element erstellen, das über komplexen Inhalt verfügt.This enables you to create an element that has complex content.

  • Wenn ein Objekt eine IEnumerable<T> implementiert, wird die Auflistung im Objekt aufgezählt, und alle Elemente in der Auflistung werden hinzugefügt.If an object implements IEnumerable<T>, the collection in the object is enumerated, and all items in the collection are added. Wenn die Auflistung XElement-Objekte oder XAttribute-Objekte enthält, wird jedes Element in der Auflistung getrennt hinzugefügt.If the collection contains XElement or XAttribute objects, each item in the collection is added separately. Dies ist wichtig, da Sie auf diese Weise die Ergebnisse einer LINQLINQ-Abfrage an den Konstruktor übergeben können.This is important because it lets you pass the results of a LINQLINQ query to the constructor.

Diese Funktionen ermöglichen es Ihnen, Code zu schreiben, um eine XML-Struktur zu erstellen.These features enable you to write code to create an XML tree. Im Folgenden finden Sie ein Beispiel dazu:The following is an example:

XElement contacts =  
    new XElement("Contacts",  
        new XElement("Contact",  
            new XElement("Name", "Patrick Hines"),  
            new XElement("Phone", "206-555-0144"),  
            new XElement("Address",  
                new XElement("Street1", "123 Main St"),  
                new XElement("City", "Mercer Island"),  
                new XElement("State", "WA"),  
                new XElement("Postal", "68042")  
            )  
        )  
    );  

Diese Funktionen ermöglichen es Ihnen auch, Code zu schreiben, der die Ergebnisse von LINQLINQ-Abfragen verwendet, wenn Sie wie folgt eine XML-Struktur erstellen:These features also enable you to write code that uses the results of LINQLINQ queries when you create an XML tree, as follows:

XElement srcTree = new XElement("Root",  
    new XElement("Element", 1),  
    new XElement("Element", 2),  
    new XElement("Element", 3),  
    new XElement("Element", 4),  
    new XElement("Element", 5)  
);  
XElement xmlTree = new XElement("Root",  
    new XElement("Child", 1),  
    new XElement("Child", 2),  
    from el in srcTree.Elements()  
    where (int)el > 2  
    select el  
);  
Console.WriteLine(xmlTree);  

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

<Root>  
  <Child>1</Child>  
  <Child>2</Child>  
  <Element>3</Element>  
  <Element>4</Element>  
  <Element>5</Element>  
</Root>  

Siehe auchSee Also

Creating XML Trees (C#) (Erstellen von XML-Strukturen (C#))Creating XML Trees (C#)