Översikt över XAttribute-klassen

Attribut är namn/värde-par som är associerade med ett element. Klassen XAttribute representerar XML-attribut.

Att arbeta med attribut i LINQ till XML liknar att arbeta med element. Deras konstruktorer är likadana. De metoder som du använder för att hämta samlingar av dem liknar dem. Ett LINQ-frågeuttryck för en samling attribut liknar ett LINQ-frågeuttryck för en samling element.

Ordningen i vilken attribut lades till i ett element bevaras. När du itererar genom attributen ser du dem i samma ordning som de lades till.

XAttribute-konstruktorn

Följande konstruktor för XAttribute klassen är den som du oftast använder:

Konstruktor Beskrivning
XAttribute(XName name, object content) Skapar ett XAttribute objekt. Argumentet name anger namnet på attributet. content Anger attributets innehåll.

Exempel: Skapa ett element med ett attribut

I följande exempel visas den vanliga uppgiften att skapa ett element som innehåller ett 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)

Det här exemplet genererar följande utdata:

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

Exempel: Funktionell konstruktion av attribut

Du kan skapa XAttribute objekt i linje med konstruktionen av XElement objekt, som du ser i följande exempel:

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)

Det här exemplet genererar följande utdata:

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

Attribut är inte noder

Det finns vissa skillnader mellan attribut och element. XAttribute objekt är inte noder i XML-trädet. De är namn/värde-par som är associerade med ett XML-element. Till skillnad från dokumentobjektmodellen (DOM) återspeglar detta xml-strukturen närmare. Även om XAttribute objekt faktiskt inte är noder i XML-trädet, liknar arbetet med XAttribute objekt att arbeta med XElement objekt.

Den här skillnaden är främst viktig endast för utvecklare som skriver kod som fungerar med XML-träd på nodnivå. Många utvecklare kommer inte att bry sig om den här skillnaden.

Se även