Información general de los ejes de LINQ to XML

Después de crear un árbol XML o cargar un documento XML en un árbol XML, es posible realizar consultas en él para encontrar elementos y atributos, así como para recuperar sus valores. Las colecciones se recuperan mediante los métodos de eje, también denominados ejes. Algunos de los ejes son métodos de las clases XElement y XDocument, que devuelven colecciones IEnumerable<T>. Algunos de los métodos Axes son métodos de extensión de la clase Extensions. Los ejes implementados como métodos de extensión trabajan con colecciones y devuelven colecciones.

Como se explica en Información general de la clase XElement, un objeto XElement representa un solo nodo de elemento. El contenido de un elemento puede ser complejo (a veces conocido como contenido estructurado) o puede ser un elemento simple. Un elemento simple puede estar vacío o contener un valor. Si el nodo incluye contenido estructurado, puede utilizar diferentes métodos del eje para recuperar enumeraciones con los elementos descendientes. Los métodos de ejes que se utilizan con más frecuencia son Elements y Descendants.

Además de los métodos de eje, que devuelven colecciones, hay otros dos métodos que se usan con regularidad en las consultas LINQ to XML. El método Element devuelve un único XElement. El método Attribute devuelve un único XAttribute.

Por diversas razones, las consultas LINK ofrecen el mecanismo más potente para examinar árboles, extraer datos de ellos y transformarlos. Las consultas LINQ trabajan con objetos que implementan IEnumerable<T>, y los ejes de LINQ to XML devuelven IEnumerable<T> de colecciones XElement, y IEnumerable<T> de colecciones XAttribute. Para realizar las consultas, necesita estas colecciones.

A parte de los métodos de ejes que permiten recuperar colecciones de elementos y atributos, existen métodos de ejes que le permiten iterar por un árbol con gran detalle. Por ejemplo, en vez de tratar directamente con los elementos y los atributos, podría trabajar con los nodos del árbol. Los nodos tienen un nivel de granularidad mayor que los elementos y atributos. Si trabaja con nodos, podrá examinar comentarios XML, nodos de texto, instrucciones de procesamiento, etc. Esta funcionalidad resultaría interesante, por ejemplo, para una persona que estuviese escribiendo un procesador de textos y quisiera guardar los documentos en formato XML. No obstante, la mayoría de programadores en XML se centran más en los elementos, los atributos y sus valores.

Métodos para recuperar una colección de elementos

A continuación encontrará un resumen de los métodos de la clase XElement (o de sus clases base) a los que podrá pasar un XElement para devolver una colección de elementos.

Método Descripción
XNode.Ancestors Devuelve un IEnumerable<T> de XElement de los antecesores de este elemento. Una sobrecarga devuelve un IEnumerable<T> de XElement de los antecesores que tengan el XName especificado.
XContainer.Descendants Devuelve un IEnumerable<T> de XElement de los descendientes de este elemento. Una sobrecarga devuelve un IEnumerable<T> de XElement de los descendientes que tengan el XName especificado.
XContainer.Elements Devuelve un IEnumerable<T> de XElement de los elementos secundarios dependientes de este elemento. Una sobrecarga devuelve un IEnumerable<T> de XElement de los elementos secundarios que tengan el XName especificado.
XNode.ElementsAfterSelf Devuelve un IEnumerable<T> de XElement de los elementos que se encuentran después de este elemento. Una sobrecarga devuelve un IEnumerable<T> de XElement de los elementos que se encuentren después de este elemento y que tengan el XName especificado.
XNode.ElementsBeforeSelf Devuelve un IEnumerable<T> de XElement de los elementos que se encuentran antes que este elemento. Una sobrecarga devuelve un IEnumerable<T> de XElement de los elementos que se encuentren antes que este elemento y que tengan el XName especificado.
XElement.AncestorsAndSelf Devuelve un IEnumerable<T> de XElement de este elemento y de sus antecesores. Una sobrecarga devuelve un IEnumerable<T> de XElement de los elementos que tengan el XName especificado.
XElement.DescendantsAndSelf Devuelve un IEnumerable<T> de XElement de este elemento y de sus descendientes. Una sobrecarga devuelve un IEnumerable<T> de XElement de los elementos que tengan el XName especificado.

Método para recuperar un solo elemento

El siguiente método recupera un único elemento secundario a partir del objeto XElement.

Método Descripción
XContainer.Element Devuelve el objeto del primer elemento XElement secundario que tenga el XName especificado.

Método para recuperar una colección de atributos

El siguiente método recupera atributos a partir de un objeto XElement.

Método Descripción
XElement.Attributes Devuelve un IEnumerable<T> de XAttribute de todos los atributos.

Método para recuperar un solo atributo

El siguiente método recupera un único atributo a partir de un objeto XElement.

Método Descripción
XElement.Attribute Devuelve el XAttribute que tenga el XName especificado.