Conteúdo válido de objetos XElement e XDocument (LINQ to XML)

Este artigo descreve os argumentos válidos que podem ser passados para os construtores e os métodos que você usa para adicionar conteúdo a elementos e documentos.

Tipos válidos para o construtor XElement

As consultas geralmente avaliam para IEnumerable<T> de XElement ou IEnumerable<T> de XAttribute. Você pode passar coleções de XElement ou de objetos XAttribute para o construtor de XElement. Por isso é conveniente passar os resultados de uma consulta como conteúdo em métodos e os construtores que você usa para popular árvores XML.

Ao adicionar conteúdo simples, vários tipos podem ser passados para esse método, incluindo:

Ao adicionar conteúdo complexo, vários tipos podem ser passados para esse método, incluindo:

Se um objeto implementar IEnumerable<T>, a coleção no objeto será enumerada, e todos os itens da coleção serão adicionados. Se a coleção contiver objetos XNode ou XAttribute, cada item da coleção será adicionado separadamente. Se a coleção contiver texto (ou objetos que são convertidos em texto), o texto da coleção será concatenado e adicionado como um único nó de texto.

Se o conteúdo for null, nada será adicionado. Ao passar uma coleção, os itens na coleção pode ser null. Um item null na coleção não tem nenhum efeito na árvore.

Um atributo adicionado deve ter um nome exclusivo dentro do elemento que o contém.

Ao adicionar objetos XNode ou XAttribute, se o novo conteúdo não tiver um pai, os objetos serão simplesmente anexados à árvore XML. Se o novo conteúdo já tiver um pai e fizer parte de outra árvore XML, o novo conteúdo será clonado, e o conteúdo recém-clonado será anexado à árvore XML.

Tipos válidos para o construtor XDocument

Atributos e conteúdo simples não podem ser adicionados a um documento.

Não há muitos cenários que exijam a criação de um XDocument. Em vez disso, você normalmente pode criar suas árvores XML com um nó raiz de XElement. A menos que você tenha um requisito específico para criar um documento (por exemplo, porque você precisa criar instruções de processamento e comentários no nível superior ou precisa dar suporte a tipos de documento), geralmente é mais conveniente usar XElement como o nó raiz.

Os tipos válidos para o construtor XDocument incluem os seguintes:

  • Zero ou um objeto XDocumentType. Os tipos de documento devem vir antes do elemento.
  • Zero ou um elemento.
  • Zero ou mais comentários.
  • Zero ou mais instruções de processamento.
  • Zero ou mais nós de texto que contêm somente espaço em branco.

Construtores e funções para adicionar conteúdo

Os métodos a seguir permitem adicionar conteúdo filho a um XElement ou a um XDocument:

Método Descrição
XElement Constrói um XElement.
XDocument Constrói um XDocument.
Add Adiciona ao final do conteúdo filho do XElement ou do XDocument.
AddAfterSelf Adiciona conteúdo depois de XNode.
AddBeforeSelf Adiciona conteúdo antes de XNode.
AddFirst Adiciona conteúdo ao início do conteúdo filho de XContainer.
ReplaceAll Substitui todo o conteúdo (nós filho e atributos) de um XElement.
ReplaceAttributes Substitui os atributos de um XElement.
ReplaceNodes Substitui os nós filho pelo novo conteúdo.
ReplaceWith Substitui um nó pelo novo conteúdo.

Confira também