Übersicht über die XDocument-Klasse

Die XDocument-Klasse enthält die Informationen, die für ein gültiges XML-Dokument erforderlich sind. Dazu zählen eine XML-Deklaration, Verarbeitungsanweisungen und Kommentare.

Sie müssen nur dann XDocument-Objekte erstellen, wenn Sie die spezifische Funktionalität benötigen, die von der XDocument-Klasse bereitgestellt wird. In vielen Fällen können Sie direkt mit XElement arbeiten. Das direkte Arbeiten mit XElement ist ein einfacheres Programmiermodell.

XDocument wird von XContainer abgeleitet und kann daher untergeordnete Knoten enthalten. XDocument-Objekte können aber nur einen untergeordneten XElement-Knoten besitzen. Dies spiegelt den XML-Standard wider, demzufolge in einem XML-Dokument nur ein Stammelement vorhanden sein darf.

Komponenten von "XDocument"

Ein XDocument kann die folgenden Elemente enthalten:

  • genau ein XDeclaration-Objekt: Mit XDeclaration können Sie die wichtigen Teile einer XML-Deklaration angeben: die XML-Version, die Codierung des Dokuments und die Angabe, ob das XML-Dokument eigenständig ist.
  • genau ein XElement-Objekt: Dieses Objekt ist der Stammknoten des XML-Dokuments.
  • eine beliebige Anzahl von XProcessingInstruction-Objekten: Eine Verarbeitungsanweisung stellt der Anwendung, die das XML-Dokument verarbeitet, entsprechende Informationen zur Verarbeitung bereit.
  • eine beliebige Anzahl von XComment-Objekten: Die Kommentare sind dem Stammelement nebengeordnet.
  • genau ein XDocumentType für die DTD

Beim Serialisieren eines XDocument-Objekts enthält die Ausgabe eine XML-Deklaration. Dies gilt auch dann, wenn XDocument.Declaration auf null gesetzt ist, solange der Writer für Writer.Settings.OmitXmlDeclaration den Standardwert false festgelegt hat.

Standardmäßig legt LINQ to XML die Version auf „1.0“ und die Codierung auf „utf-8“ fest.

Verwenden von XElement ohne XDocument

Wie zuvor erwähnt, ist die XElement-Klasse die Hauptklasse in der LINQ to XML-Programmierschnittstelle. In vielen Fällen ist es für Ihre Anwendung nicht notwendig, dass Sie ein Dokument erstellen. Die Verwendung der XElement-Klasse bietet folgende Möglichkeiten:

  • Erstellen einer XML-Struktur
  • Hinzufügen weiterer XML-Strukturen
  • Ändern der XML-Struktur
  • Speichern Sie es.

Verwenden von XDocument

Zum Konstruieren eines XDocument können Sie genauso die funktionale Konstruktion verwenden wie zum Konstruieren von XElement-Objekten.

Im folgenden Beispiel werden ein XDocument-Objekt und die zugehörigen enthaltenen Objekte erstellt.

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")

Das Beispiel generiert die folgende Ausgabe 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.-->

Siehe auch