Condividi tramite


Panoramica della classe XDocument

La classe XDocument contiene le informazioni necessarie per un documento XML valido, che includono la dichiarazione XML, le istruzioni di elaborazione e i commenti.

È necessario creare oggetti XDocument solo se è richiesta la funzionalità specifica fornita dalla classe XDocument. In molte circostanze è possibile usare direttamente XElement. L'utilizzo diretto di XElement corrisponde a un modello di programmazione più semplice.

XDocument deriva da XContainer, quindi può contenere nodi figlio. Gli oggetti XDocument possono contenere un solo nodo XElement figlio, in conformità allo standard XML, secondo il quale un documento XML può contenere un unico elemento radice.

Componenti di XDocument

Un oggetto XDocument può contenere i seguenti elementi:

  • Un unico oggetto XDeclaration. XDeclaration consente di specificare le parti pertinenti di una dichiarazione XML, ovvero la versione del codice XML, la codifica del documento e se il documento XML è autonomo.
  • Un unico oggetto XElement. Questo oggetto è il nodo radice del documento XML.
  • Un qualsiasi numero di oggetti XProcessingInstruction. Un'istruzione di elaborazione comunica informazioni a un'applicazione che elabora l'XML.
  • Un qualsiasi numero di oggetti XComment. I commenti saranno elementi di pari livello dell'elemento radice.
  • Un unico oggetto XDocumentType per DTD.

Quando si serializza un oggetto XDocument, anche se XDocument.Declaration è null, l'output includerà una dichiarazione XML se per il writer Writer.Settings.OmitXmlDeclaration è impostato su false (impostazione predefinita).

Per impostazione predefinita, LINQ to XML imposta la versione su "1.0" e la codifica su "utf-8".

Usare XElement senza XDocument

Come menzionato in precedenza, la classe XElement è la classe principale dell'interfaccia di programmazione di LINQ to XML. In molti casi l'applicazione non richiederà la creazione di un documento. Con la classe XElement è possibile:

  • Creare un albero XML.
  • Aggiungervi altri alberi XML.
  • Modificare l'albero XML.
  • Selezionare Salva per salvare.

Usare XDocument

Per costruire un oggetto XDocument, usare la costruzione funzionale come se si trattasse di costruire oggetti XElement.

Nell'esempio seguente vengono creati un oggetto XDocument e i relativi oggetti contenuti associati.

XDocument d = new XDocument(
    new XComment("This is a comment."),
    new XProcessingInstruction("xml-stylesheet",
        "href='mystyle.css' title='Compact' type='text/css'"),
    new XElement("Pubs",
        new XElement("Book",
            new XElement("Title", "Artifacts of Roman Civilization"),
            new XElement("Author", "Moreno, Jordao")
        ),
        new XElement("Book",
            new XElement("Title", "Midieval Tools and Implements"),
            new XElement("Author", "Gazit, Inbar")
        )
    ),
    new XComment("This is another comment.")
);
d.Declaration = new XDeclaration("1.0", "utf-8", "true");
Console.WriteLine(d);

d.Save("test.xml");
Dim doc As XDocument = <?xml version="1.0" encoding="utf-8"?>
                       <!--This is a comment.-->
                       <?xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>
                       <Pubs>
                           <Book>
                               <Title>Artifacts of Roman Civilization</Title>
                               <Author>Moreno, Jordao</Author>
                           </Book>
                           <Book>
                               <Title>Midieval Tools and Implements</Title>
                               <Author>Gazit, Inbar</Author>
                           </Book>
                       </Pubs>
                       <!--This is another comment.-->
doc.Save("test.xml")

L'esempio produce il seguente output in test.xml:

<?xml version="1.0" encoding="utf-8"?>
<!--This is a comment.-->
<?xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>
<Pubs>
  <Book>
    <Title>Artifacts of Roman Civilization</Title>
    <Author>Moreno, Jordao</Author>
  </Book>
  <Book>
    <Title>Midieval Tools and Implements</Title>
    <Author>Gazit, Inbar</Author>
  </Book>
</Pubs>
<!--This is another comment.-->

Vedi anche