Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los atributos son pares nombre-valor asociados a un elemento. La XAttribute clase representa atributos XML.
Trabajar con atributos en LINQ to XML es similar a trabajar con elementos. Sus constructores son similares. Los métodos que se usan para recuperar colecciones de ellos son similares. Una expresión de consulta LINQ para una colección de atributos es similar a una expresión de consulta LINQ para una colección de elementos.
El orden en el que se han agregado atributos a un elemento se conserva. Es decir, cuando recorre en iteración los atributos, los verá en el mismo orden en que se agregaron.
El constructor XAttribute
El siguiente constructor de la XAttribute clase es el que se usará con más frecuencia:
Constructor | Descripción |
---|---|
XAttribute(XName name, object content) |
Crea un objeto XAttribute. El name argumento especifica el nombre del atributo; content especifica el contenido del atributo. |
Ejemplo: Creación de un elemento con un atributo
En el ejemplo siguiente se muestra la tarea común 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)
En este ejemplo se genera la siguiente salida:
<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)
En este ejemplo se genera la siguiente salida:
<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 atributos y elementos. XAttribute los objetos no son nodos del árbol XML. Son pares nombre-valor asociados a un elemento XML. A diferencia del Modelo de objetos de documento (DOM), esto refleja más detenidamente la estructura de XML. Aunque XAttribute los objetos no son realmente nodos en el árbol XML, trabajar con XAttribute objetos es similar a trabajar con XElement objetos.
Esta distinción es principalmente importante solo para los desarrolladores que escriben código que funciona con árboles XML en el nivel de nodo. Muchos desarrolladores no se preocuparán por esta distinción.