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:
- String
- Double
- Single
- Decimal
- Boolean
- DateTime
- TimeSpan
- DateTimeOffset
- Qualquer tipo que implemente
Object.ToString
. - Qualquer tipo que implemente IEnumerable<T>.
Ao adicionar conteúdo complexo, vários tipos podem ser passados para esse método, incluindo:
- XObject
- XNode
- XAttribute
- Qualquer tipo que implementa IEnumerable<T>
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. |