Contenuto valido degli oggetti XElement e XDocument (LINQ to XML)
Questo articolo descrive gli argomenti validi che possono essere passati ai costruttori e metodi usati per aggiungere contenuto a elementi e documenti.
Tipi validi per il costruttore XElement
Spesso le query restituiscono IEnumerable<T> di XElement o IEnumerable<T> di XAttribute. È possibile passare raccolte di oggetti XElement o XAttribute al costruttore XElement. Ecco perché è conveniente passare i risultati di una query come contenuto nei metodi e nei costruttori che si utilizzano per popolare gli alberi XML.
Quando si aggiunge contenuto semplice, è possibile passare vari tipi a questo metodo, tra cui:
- String
- Double
- Single
- Decimal
- Boolean
- DateTime
- TimeSpan
- DateTimeOffset
- Qualsiasi tipo che implementa
Object.ToString
. - Qualsiasi tipo che implementa IEnumerable<T>.
Quando si aggiunge contenuto complesso, è possibile passare vari tipi a questo metodo, tra cui:
- XObject
- XNode
- XAttribute
- Qualsiasi tipo che implementa IEnumerable<T>
Se un oggetto implementa IEnumerable<T>, l'insieme nell'oggetto viene enumerato e tutti gli elementi dell'insieme vengono aggiunti. Se l'insieme contiene XNode o XAttribute oggetti, ogni elemento dell'insieme viene aggiunto separatamente. Se l'insieme contiene testo (o oggetti convertiti in testo), il testo nella raccolta viene concatenato e aggiunto come nodo di testo singolo.
Se il contenuto è null
, non viene aggiunto alcun elemento. Quando si passa una raccolta, gli elementi nella raccolta possono essere null
. Un elemento null
nella collezione non ha alcun effetto sull'albero.
Un attributo aggiunto deve avere un nome univoco all'interno dell'elemento contenitore.
Quando si aggiungono XNode o XAttribute oggetti, se il nuovo contenuto non ha un elemento padre, gli oggetti vengono semplicemente collegati all'albero XML. Se il nuovo contenuto è già associato come figlio e fa parte di un altro albero XML, viene clonato e il contenuto appena clonato viene associato all'albero XML.
Tipi validi per il costruttore XDocument
Gli attributi e il contenuto semplice non possono essere aggiunti a un documento.
Non esistono molti scenari che richiedono la creazione di un XDocument. In genere è possibile creare alberi XML con un nodo radice XElement. A meno che non si disponga di un requisito specifico per creare un documento (ad esempio, perché è necessario creare istruzioni di elaborazione e commenti al livello superiore oppure è necessario supportare i tipi di documento), è spesso più comodo usare XElement come nodo radice.
I tipi validi per il costruttore XDocument includono quanto segue:
- Zero o un XDocumentType oggetto. I tipi di documento devono venire prima dell'elemento specifico.
- Zero o un elemento.
- Zero o più commenti.
- Zero o più istruzioni di elaborazione.
- Zero o più nodi di testo che contengono solo spazi vuoti.
Costruttori e funzioni per l'aggiunta di contenuto
I metodi seguenti consentono di aggiungere contenuti secondari a un XElement o a un XDocument:
Metodo | Descrizione |
---|---|
XElement | Costruisce un XElement. |
XDocument | Costruisce un XDocument. |
Add | Aggiunge alla fine del contenuto figlio del XElement o XDocument. |
AddAfterSelf | Aggiunge contenuto dopo il XNode. |
AddBeforeSelf | Aggiunge contenuto prima del XNode. |
AddFirst | Aggiunge contenuto all'inizio del contenuto figlio del XContainer. |
ReplaceAll | Sostituisce tutto il contenuto (nodi figlio e attributi) di un elemento XElement. |
ReplaceAttributes | Sostituisce gli attributi di un XElement. |
ReplaceNodes | Sostituisce i nodi figli con nuovo contenuto. |
ReplaceWith | Sostituisce un nodo con nuovo contenuto. |