Información general de la clase XAttribute
Los atributos son pares nombre-valor asociados a un elemento. La clase XAttribute representa los atributos XML.
Trabajar con atributos en LINQ to XML es similar a trabajar con elementos. Sus constructores son similares. Los métodos que usa para recuperar colecciones de ellos también son similares. Una expresión de consulta LINQ de una colección de atributos se parece a una expresión de consulta de LINQ de una colección de elementos.
Se conserva el orden en el que se agregaron los atributos a un elemento. Es decir, cuando procese una iteración en los atributos, los verá en el mismo orden en el que se agregaron.
El constructor XAttribute
El siguiente constructor de la clase XAttribute es el que usará normalmente:
Constructor | Descripción |
---|---|
XAttribute(XName name, object content) |
Crea un objeto XAttribute. El argumento name especifica el nombre del atributo; content especifica el contenido del atributo. |
Ejemplo: Creación de un elemento con un atributo
El siguiente ejemplo muestra la tarea habitual de crear un elemento que contiene un 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)
Este ejemplo produce el siguiente resultado:
<Phone Type="Home">555-555-5555</Phone>
Ejemplo: Construcción funcional de atributos
Puede construir objetos XAttribute en línea con la construcción de objetos XElement, como se muestra en el ejemplo siguiente:
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)
Este ejemplo produce el siguiente resultado:
<Customers>
<Customer>
<Name>John Doe</Name>
<PhoneNumbers>
<Phone type="home">555-555-5555</Phone>
<Phone type="work">666-666-6666</Phone>
</PhoneNumbers>
</Customer>
</Customers>
Los atributos no son nodos
Existen algunas diferencias entre los atributos y los elementos. Los objetos XAttribute no son nodos en el árbol XML. Son pares nombre-valor asociados a un elemento XML. A diferencia de Document Object Model (DOM), esto refleja de manera más precisa la estructura del código XML. Aunque los objetos XAttribute no son realmente nodos en el árbol XML, trabajar con objetos XAttribute es parecido a trabajar con objetos XElement.
Esta distinción solo resulta de importancia para los desarrolladores que escriban código que trabaje con árboles XML en el nivel de nodo. A muchos desarrolladores no les afecta esta distinción.