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:
- 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, entre los que se incluyen:
- 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 (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. |