Contenido válido de los objetos XElement y XDocument (LINQ to XML)

En este artículo se describen los argumentos válidos que se pueden pasar a los constructores y los métodos que se usan para agregar contenido a elementos y documentos.

Tipos válidos para el constructor XElement

Las consultas a menudo evalúan a IEnumerable<T> de XElement o a IEnumerable<T> de XAttribute. Se pueden pasar colecciones de objetos XElement o XAttribute al constructor XElement. Es por esto que resulta conveniente pasar los resultados de una consulta como contenido a los métodos y constructores que use para rellenar árboles XML.

Al agregar contenido simple, se pueden pasar varios tipos a este método, como:

Al agregar contenido complejo, se pueden pasar varios tipos a este método, como:

Si un objeto implementa IEnumerable<T>, se enumera la colección del objeto y se agregan todos los elementos de la colección. Si la colección contiene objetos XNode o XAttribute, cada elemento de la colección se agrega por separado. Si la colección contiene texto (u objetos convertidos a texto), el texto de la colección se concatena y se agrega como un nodo de texto.

Si el contenido es null, no se agrega nada. Al pasar una colección, se permite que los elementos de la colección sean null. Un elemento null de la colección no tiene ningún efecto en el árbol.

Un atributo agregado debe tener un nombre único en el elemento contenedor.

Cuando se asocian objetos XNode o XAttribute, si el contenido nuevo no tiene un elemento primario, los objetos simplemente se adjuntan al árbol XML. Si el contenido nuevo ya tiene un elemento primario y forma parte de otro árbol XML, el nuevo contenido se clonará y dicho clon se adjuntará al árbol XML.

Tipos válidos para el constructor XDocument

Los atributos y el contenido simple no se pueden agregar a un documento.

No existen muchos escenarios que requieran la creación de un objeto XDocument. En su lugar, normalmente puede crear los árboles XML con un nodo raíz XElement. A menos que exista un requisito específico de crear un documento (por ejemplo, porque deba crear instrucciones y comentarios de procesamiento en el nivel superior, o bien deba admitir tipos de documento), a menudo resulta más conveniente usar XElement como nodo raíz.

Entre los tipos válidos para el constructor XDocument se incluyen los siguientes:

  • Cero o un objeto XDocumentType. Los tipos de documento deben ir antes del elemento.
  • Cero o un elemento.
  • Cero o más comentarios.
  • Cero o más instrucciones de procesamiento.
  • Cero o más nodos de texto que contengan solo espacios en blanco.

Constructores y funciones para agregar contenido

Los métodos siguientes permiten agregar contenido secundario a un objeto XElement o a un objeto XDocument:

Método Descripción
XElement Construye un objeto XElement.
XDocument Construye un objeto XDocument.
Add Agrega al final del contenido secundario del objeto XElement o del objeto XDocument.
AddAfterSelf Añade un contenido detrás de XNode.
AddBeforeSelf Agrega contenido antes de XNode.
AddFirst Agrega un contenido al comienzo de los contenidos secundarios del XContainer.
ReplaceAll Reemplaza todo el contenido (atributos y nodos secundarios) de un objeto XElement.
ReplaceAttributes Reemplaza los atributos de un objeto XElement.
ReplaceNodes Reemplaza los nodos secundarios por contenido nuevo.
ReplaceWith Reemplaza un nodo por contenido nuevo.

Consulte también