funktionale Konstruktion (LINQ to XML) im Vergleich

LINQ to XML bietet mit der funktionalen Konstruktion eine leistungsfähige Möglichkeit zur Erstellung von XML-Elementen. Funktionale Konstruktion ist die Fähigkeit, eine XML-Struktur in einer einzelnen Anweisung zu erstellen.  

Es gibt mehrere wichtige Features der LINQ to XML-Programmierschnittstelle, die für die funktionale Konstruktion verantwortlich sind:

  • Der XElement-Konstruktor akzeptiert verschiedene Argumentarten als Inhalt.So können Sie z. B. ein anderes XElement-Objekt übergeben, das zu einem untergeordneten Element wird.Sie können auch ein XAttribute-Objekt übergeben, das zu einem Attribut des Elements wird.Oder Sie übergeben ein beliebiges anderes Objekt, das in eine Zeichenfolge konvertiert wird und zum Textinhalt des Elements wird.

  • Der XElement-Konstruktor verwendet ein params-Array vom Typ Object, sodass Sie beliebig viele Objekte an den Konstruktor übergeben können.Auf diese Weise können Sie ein Element erstellen, das über komplexen Inhalt verfügt.

  • Wenn ein Objekt die IEnumerable<T>-Schnittstelle implementiert, wird die Auflistung im Objekt aufgezählt, und alle Elemente in der Auflistung werden hinzugefügt.Wenn die Auflistung XElement-Objekte oder XAttribute-Objekte enthält, wird jedes Element in der Auflistung getrennt hinzugefügt.Dies ist wichtig, da Sie auf diese Weise die Ergebnisse einer LINQ-Abfrage an den Konstruktor übergeben können.

Diese Funktionen ermöglichen es Ihnen, Code zu schreiben, um eine XML-Struktur zu erstellen.Das Folgende ist ein Beispiel:

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 LINQ-Abfragen verwendet, wenn Sie, wie folgt, eine XML-Struktur erstellen:

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);

In Visual Basic wird dasselbe durch XML-Literale bewerkstelligt:

Dim srcTree As XElement = _
    <Root>
        <Element>1</Element>
        <Element>2</Element>
        <Element>3</Element>
        <Element>4</Element>
        <Element>5</Element>
    </Root>
Dim xmlTree As XElement = _
    <Root>
        <Child>1</Child>
        <Child>2</Child>
        <%= From el In srcTree.Elements() _
            Where CInt(el) > 2 _
            Select el %>
    </Root>
Console.WriteLine(xmlTree)

Dieses Beispiel führt zur folgenden Ausgabe:

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

Siehe auch

Konzepte

Erstellen von XML-Strukturen