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:
- String
- Double
- Single
- Decimal
- Boolean
- DateTime
- TimeSpan
- DateTimeOffset
- Cualquier tipo que implemente
Object.ToString
. - Cualquier tipo que implemente IEnumerable<T>.
Al agregar contenido complejo, se pueden pasar varios tipos a este método, como:
- XObject
- XNode
- XAttribute
- Cualquier tipo que implemente IEnumerable<T>.
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. |