Vue d’ensemble de la classe XDocument

La classe XDocument contient les informations nécessaires pour un document XML valide. Cela inclut une déclaration XML, des instructions de traitement et des commentaires.

La création d’objets XDocument est nécessaire uniquement si vous avez besoin de la fonctionnalité spécifique fournie par la classe XDocument. Dans de nombreux cas, vous pouvez travailler directement avec XElement. L'utilisation directe de l'objet XElement est un modèle de programmation plus simple.

XDocument dérive de XContainer et peut donc contenir des nœuds enfants. Toutefois, les objets XDocument ne peuvent avoir qu'un seul nœud XElement enfant. Cela reflète la norme XML selon laquelle il ne doit y avoir qu'un seul élément racine dans un document XML.

Composants de XDocument

Un objet XDocument peut contenir les éléments suivants :

  • Un objet XDeclaration. XDeclaration vous permet de spécifier les parties pertinentes d’une déclaration XML : la version XML, l’encodage du document et si le document XML est autonome.
  • Un objet XElement. Cet objet est le nœud racine du document XML.
  • Une quantité quelconque d'objets XProcessingInstruction. Une instruction de traitement communique des informations à une application qui traite le code XML.
  • Une quantité quelconque d'objets XComment. Les commentaires seront des frères de l'élément racine.
  • Un objet XDocumentType pour le DTD.

Lorsque vous sérialisez un objet XDocument, même si XDocument.Declaration a la valeur null, la sortie aura une déclaration XML à condition que la propriété Writer.Settings.OmitXmlDeclaration du writer ait la valeur false (valeur par défaut).

Par défaut, LINQ to XML définit la version sur « 1.0 » et l’encodage sur « utf-8 ».

Utiliser XElement sans XDocument

Comme mentionné précédemment, la classe XElement est la classe principale dans l’interface de programmation LINQ to XML. Dans de nombreux cas, votre application ne nécessitera pas la création d’un document. À l’aide de la classe XElement, vous pouvez :

  • Créer une arborescence XML.
  • Ajouter d’autres arborescences XML.
  • Modifier l’arborescence XML.
  • Enregistrez-le.

Utiliser XDocument

Pour construire un objet XDocument, utilisez la construction fonctionnelle, comme pour construire des objets XElement.

L’exemple suivant crée un objet XDocument et ses objets contenus associés.

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’exemple génère cette sortie dans 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.-->

Voir aussi