Contenuto valido di oggetti XElement e XDocument (LINQ to XML)
Questo articolo descrive gli argomenti validi che è possibile passare a costruttori e i metodi usati per aggiungere contenuto a elementi e documenti.
Tipi validi per il costruttore XElement
Le query spesso restituiscono IEnumerable<T> come valore di XElement o IEnumerable<T> come valore di XAttribute. È possibile passare raccolte di oggetti XElement o XAttribute al costruttore XElement. Pertanto è utile passare i risultati di una query come contenuto in metodi e costruttori usati per popolare 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>, la raccolta nell'oggetto viene enumerata e vengono aggiunti tutti gli elementi della raccolta. Se la raccolta contiene oggetti XNode o XAttribute, ogni elemento della raccolta viene aggiunto separatamente. Se la raccolta contiene testo (oppure oggetti convertiti in testo), il testo della raccolta viene concatenato e aggiunto come un unico nodo di tipo text.
Se il contenuto è null
, non viene aggiunto nulla. Quando si passa una raccolta, gli elementi al suo interno possono essere null
. Un elemento null
della raccolta non ha effetto sull'albero.
Un attributo aggiunto deve includere un nome univoco nell'elemento che lo contiene.
Se quando si aggiungono oggetti XNode o XAttribute, il nuovo contenuto non ha elementi padre, gli oggetti vengono semplicemente collegati all'albero XML. Se invece il nuovo contenuto include già elementi padre e fa parte di un altro albero XML, viene duplicato e quindi collegato all'albero XML.
Tipi validi per il costruttore XDocument
Non è possibile aggiungere attributi e contenuto semplice a un documento.
Non sono molti gli scenari in cui è richiesta la creazione di un oggetto XDocument. In genere, è invece possibile creare alberi XML con un nodo radice XElement. A meno di particolari esigenze che richiedono la creazione di un documento, ad esempio perché è necessario creare istruzioni di elaborazione e commenti al primo livello o supportare tipi di documento, è consigliabile usare XElement come nodo radice.
I tipi validi per il costruttore XDocument includono i seguenti:
- Zero o un oggetto XDocumentType. I tipi di documento devono essere inseriti prima dell'elemento.
- Zero o un elemento.
- Zero o più commenti.
- Zero o più istruzioni di elaborazione.
- Zero o più nodi di tipo text che contengono solo spazi vuoti.
Costruttori e funzioni per l'aggiunta di contenuto
I metodi seguenti consentono di aggiungere contenuto figlio a un oggetto XElement o XDocument:
metodo | Descrizione |
---|---|
XElement | Costruisce un oggetto XElement. |
XDocument | Costruisce un oggetto XDocument. |
Add | Aggiunge il contenuto alla fine del contenuto figlio di XElement o XDocument. |
AddAfterSelf | Consente di aggiungere contenuto dopo XNode. |
AddBeforeSelf | Aggiunge contenuto prima di XNode. |
AddFirst | Consente di aggiungere il contenuto all'inizio del contenuto figlio di XContainer. |
ReplaceAll | Sostituisce tutto il contenuto (nodi figlio e attributi) di un oggetto XElement. |
ReplaceAttributes | Sostituisce gli attributi di un oggetto XElement. |
ReplaceNodes | Sostituisce i nodi figlio con nuovo contenuto. |
ReplaceWith | Sostituisce un nodo con nuovo contenuto. |