Přehled třídy XAttribute

Atributy jsou páry name-value, které jsou přidruženy k elementu. Třída XAttribute představuje atributy XML.

Práce s atributy v LINQ to XML je podobná práci s elementy. Jejich konstruktory jsou podobné. Metody, které používáte k načtení kolekcí, jsou podobné. Výraz dotazu LINQ pro kolekci atributů vypadá podobně jako výraz dotazu LINQ pro kolekci prvků.

Pořadí, ve kterém byly atributy přidány do elementu, je zachována. To znamená, že když iterujete atributy, uvidíte je ve stejném pořadí, v jakém byly přidány.

Konstruktor XAttribute

Následující konstruktor XAttribute třídy je ten, který budete nejčastěji používat:

Konstruktor Popis
XAttribute(XName name, object content) Vytvoří objekt XAttribute. Argument name určuje název atributu; content určuje obsah atributu.

Příklad: Vytvoření elementu s atributem

Následující příklad ukazuje společnou úlohu vytvoření elementu, který obsahuje atribut.

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)

Tento příklad vytvoří následující výstup:

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

Příklad: Funkční konstrukce atributů

Objekty můžete sestavit XAttribute v souladu s konstrukcí XElement objektů, jak je znázorněno v následujícím příkladu:

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)

Tento příklad vytvoří následující výstup:

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

Atributy nejsou uzly

Mezi atributy a prvky existují určité rozdíly. XAttribute objekty nejsou uzly ve stromu XML. Jsou to páry name-value přidružené k elementu XML. Na rozdíl od modelu DOM (Document Object Model) se tím více odráží struktura XML. I když XAttribute objekty nejsou ve skutečnosti uzly ve stromu XML, práce s XAttribute objekty je podobná práci s XElement objekty.

Tento rozdíl je primárně důležitý jenom pro vývojáře, kteří píší kód, který funguje s stromy XML na úrovni uzlu. Mnoho vývojářů se nebude zabývat tímto rozdílem.

Viz také