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:

Quando si aggiunge contenuto complesso, è possibile passare vari tipi a questo metodo, tra cui:

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.

Vedi anche