Cenni preliminari sulla classe XDocument
In questo argomento viene descritta la classe XDocument.
Cenni preliminari sulla classe XDocument
La classe XDocument include le informazioni necessarie per un documento XML valido,ovvero una dichiarazione XML, istruzioni di elaborazione e commenti.
Notare che è necessario creare oggetti XDocument solo se è richiesta la funzionalità specifica fornita dalla classe XDocument.In molte circostanze è possibile utilizzare direttamente XElement.L'utilizzo diretto di XElement corrisponde a un modello di programmazione più semplice.
XDocument deriva da XContainer,pertanto 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.Si tratta del 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.L'oggetto XComment non può essere il primo argomento dell'elenco perché un documento XML non può iniziare con un commento.
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".
Utilizzo di XElement senza XDocument
Come riportato in precedenza, la classe XElement è quella principale nell'interfaccia di programmazione di LINQ to XML. In molti casi, l'applicazione non richiede la creazione di un documento.Se si utilizza la classe XElement, è possibile creare una struttura ad albero XML, aggiungervi altre strutture ad albero XML, modificare la struttura ad albero XML e salvarla.
Utilizzo di XDocument
Per costruire un oggetto XDocument, utilizzare la costruzione funzionale come se si trattasse di costruire oggetti XElement.
Nel codice 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")
Quando si esamina il file test.xml, si ottiene l'output seguente:
<?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.-->