Übersicht über die XAttribute-Klasse

Attribute sind Name/Wert-Paare, die einem Element zugeordnet sind. Die XAttribute-Klasse stellt XML-Attribute dar.

Das Arbeiten mit Attributen in LINQ to XML ist vergleichbar mit dem Arbeiten mit Elementen. Ihre Konstruktoren ähneln sich, und auch die Methoden zum Aufrufen von Auflistungen sind ähnlich. Ein LINQ-Abfrageausdruck für eine Auflistung von Attributen sieht einem LINQ-Abfrageausdruck für eine Sammlung von Elementen ähnlich.

Die Reihenfolge, in der einem Element Attribute hinzugefügt wurden, wird beibehalten. Das heißt, wenn Sie die Attribute durchlaufen, sehen Sie die Attribute genau in der Reihenfolge, in der sie hinzugefügt wurden.

Der "XAttribute"-Konstruktor

Der folgende Konstruktor der XAttribute-Klasse ist der Konstruktor, den Sie am häufigsten verwenden werden:

Konstruktor BESCHREIBUNG
XAttribute(XName name, object content) Sie erstellt ein XAttribute-Objekt. Das name-Argument gibt den Namen des Attributs an, während content den Inhalt des Attributs angibt.

Beispiel: Erstellen eines Elements mit einem Attribut

Das folgende Beispiel zeigt die häufige Aufgabe des Erstellens eines Elements mit einem Attribut.

XElement phone = new XElement("Phone",
    new XAttribute("Type", "Home"),
    "555-555-5555");
Console.WriteLine(phone);
Dim phone As XElement = <Phone Type="Home">555-555-5555</Phone>
Console.WriteLine(phone)

Dieses Beispiel erzeugt die folgende Ausgabe:

<Phone Type="Home">555-555-5555</Phone>

Beispiel: Funktionale Konstruktion von Attributen

Mit der Konstruktion von XAttribute-Objekten können Sie XElement-Objekte „inline“ erstellen, wie das folgende Beispiel zeigt:

XElement c = new XElement("Customers",
    new XElement("Customer",
        new XElement("Name", "John Doe"),
        new XElement("PhoneNumbers",
            new XElement("Phone",
                new XAttribute("type", "home"),
                "555-555-5555"),
            new XElement("Phone",
                new XAttribute("type", "work"),
                "666-666-6666")
        )
    )
);
Console.WriteLine(c);
Dim c As XElement = _
    <Customers>
        <Customer>
            <Name>John Doe</Name>
            <PhoneNumbers>
                <Phone type="home">555-555-5555</Phone>
                <Phone type="work">666-666-6666</Phone>
            </PhoneNumbers>
        </Customer>
    </Customers>
Console.WriteLine(c)

Dieses Beispiel erzeugt die folgende Ausgabe:

<Customers>
  <Customer>
    <Name>John Doe</Name>
    <PhoneNumbers>
      <Phone type="home">555-555-5555</Phone>
      <Phone type="work">666-666-6666</Phone>
    </PhoneNumbers>
  </Customer>
</Customers>

Attribute sind keine Knoten

Es gibt einige Unterschiede zwischen Attributen und Elementen. XAttribute-Objekte sind keine Knoten in der XML-Struktur. Sie sind Name/Wert-Paare, die einem XML-Element zugeordnet sind. Im Unterschied zum Dokumentobjektmodell (DOM) reflektiert dies die Struktur des XML genauer. Auch wenn XAttribute-Objekte keine Knoten in der XML-Struktur im eigentlichen Sinne sind, ist das Arbeiten mit XAttribute-Objekten vergleichbar mit dem Arbeiten mit XElement-Objekten.

Diese Unterscheidung ist im Wesentlichen nur für Entwickler von Bedeutung, die Code schreiben, der mit XML-Strukturen auf Knotenebene arbeitet. Für die meisten Entwickler*innen dürfte dieser Unterschied ohne praktische Bedeutung sein.

Siehe auch