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

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

Tipos válidos para o construtor XElement

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

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

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

Se um objeto implementa IEnumerable<T>, a coleção no objeto é enumerada e todos os itens na coleção são adicionados. Se a coleção contiver XNode ou XAttribute objetos, cada item da coleção será adicionado separadamente. Se a coleção contiver texto (ou objetos que são convertidos em texto), o texto na coleção é 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 da coleção podem ser null. Um item null na coleção não tem efeito na árvore.

Um atributo adicionado deve ter um nome exclusivo dentro de seu elemento que contém.

Ao adicionar objetos XNode ou XAttribute, se o novo conteúdo não tiver pai, os objetos serão simplesmente anexados à árvore XML. Se o novo conteúdo já for 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 que você crie um XDocument. Em vez disso, geralmente pode-se criar árvores XML com um nó raiz XElement. A menos que haja um requisito específico para criar um documento (por exemplo, por ser necessário criar instruções de processamento e comentários ao nível superior, ou por ser preciso suportar tipos de documentos), é muitas vezes mais conveniente usar o XElement como o nó raiz.

Os tipos válidos para o construtor XDocument incluem o seguinte:

  • Zero ou um XDocumentType objeto. 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 apenas espaço em branco.

Construtores e funções para adicionar conteúdo

Os métodos a seguir permitem que você adicione 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 XDocument.
AddAfterSelf Adiciona conteúdo após o XNode.
AddBeforeSelf Adiciona conteúdo antes do XNode.
AddFirst Adiciona conteúdo no início do conteúdo filho do XContainer.
ReplaceAll Substitui todo o conteúdo (nós-filhos e atributos) de um XElement.
ReplaceAttributes Substitui os atributos de um XElement.
ReplaceNodes Substitui os nós filhos por novos conteúdos.
ReplaceWith Substitui um nó por novo conteúdo.

Ver também