Compartir a través de


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

En este artículo se describen los argumentos válidos que se pueden pasar a constructores y 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. Puede pasar colecciones de objetos XElement o XAttribute al constructor de XElement. Por eso es conveniente pasar los resultados de una consulta como contenido a métodos y constructores que se usan para rellenar árboles XML.

Al agregar contenido simple, se pueden pasar varios tipos a este método, entre los que se incluyen:

Al agregar contenido complejo, se pueden pasar varios tipos a este método, entre los que se incluyen:

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 (o objetos que se convierten en texto), el texto de la colección se concatena y se agrega como un único 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 dentro de su elemento contenedor.

Al agregar objetos XNode o XAttribute, si el nuevo contenido no tiene ningún elemento primario, los objetos simplemente se adjuntan al árbol XML. Si el nuevo contenido ya tiene un elemento padre y forma parte de otro árbol XML, entonces el contenido se clona y el contenido recién clonado se adjunta 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 su árbol XML con un nodo raíz de XElement. A menos que tenga un requisito específico para crear un documento (por ejemplo, porque tiene que crear instrucciones de procesamiento y comentarios en el nivel superior, o tiene que admitir tipos de documento), a menudo es más cómodo usar XElement como nodo raíz.

Los tipos válidos para el constructor de XDocument incluyen lo siguiente:

  • Cero o un objeto XDocumentType. Los tipos de documento deben aparecer 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 solo contienen 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 XElement.
ReplaceNodes Reemplaza los nodos secundarios por contenido nuevo.
ReplaceWith Reemplaza un nodo por el nuevo contenido.

Consulte también