Visão geral da classe XAttribute

Os atributos são pares nome-valor que são associados a um elemento. A classe de XAttribute representa atributos XML.

Trabalhar com atributos no LINQ to XML é semelhante a trabalhar com elementos. Os construtores são semelhantes. Os métodos que você usa para recuperar coleções deless são semelhantes. Uma expressão de consulta LINQ para uma coleção de atributos se parece com uma expressão de consulta LINQ para uma coleção de elementos.

A ordem em que os atributos foram adicionados a um elemento é preservada. Isto é, quando você itera através de atributos, você ver na mesma ordem que foram adicionados.

O construtor XAttribute

O seguinte construtor de classe XAttribute é aquele que você usará mais comumente:

Construtor Descrição
XAttribute(XName name, object content) Cria um objeto de XAttribute . O argumento de name especifica o nome do atributo; content especifica o conteúdo de atributo.

Exemplo: criar um elemento com um atributo

O exemplo a seguir mostra a tarefa comum de criar um elemento que contém um atributo.

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)

Esse exemplo gera a saída a seguir:

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

Exemplo: construção funcional de atributos

Você pode construir objetos XAttribute em linha com a construção de objetos XElement, conforme mostrado no seguinte exemplo:

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)

Esse exemplo gera a saída a seguir:

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

Atributos não são nós

Há algumas diferenças entre atributos e elementos. Os objetos XAttribute não são nós na árvore XML. São pares nome-valor associados a um elemento XML. Em contraste com Document Object Model (DOM), este reflete mais apertadamente a estrutura XML. Embora os objetos de XAttribute não são realmente nós na árvore XML, trabalhar com objetos de XAttribute é semelhante a trabalhar com objetos de XElement.

Essa distinção importante é primeiro somente para os desenvolvedores que estão escrevendo código que funciona com as árvores XML no nível do nó. Muitos desenvolvedores não estarão preocupados com essa distinção.

Confira também