Übersicht über die 'XDocument'-Klasse

Dieses Thema enthält eine Einführung in die XDocument-Klasse.

Allgemeines

Die XDocument-Klasse enthält die für ein gültiges XML-Dokument erforderlichen Informationen. Dazu gehören eine XML-Deklaration, Verarbeitungsanweisungen und Kommentare.

Beachten Sie, dass Sie XDocument-Objekte nur erstellen müssen, 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. Deshalb kann es 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: Dies 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. Das XComment-Objekt kann nicht das erste Argument in der Liste sein, da ein XML-Dokument nicht mit einem Kommentar beginnen darf.

  • 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 bereits erwähnt, ist die XElement-Klasse die Hauptklasse in der LINQ to XML-Programmierschnittstelle. In vielen Fällen wird es für Ihre Anwendung nicht notwendig sein, ein Dokument zu erstellen. Dank der XElement-Klasse können Sie eine XML-Struktur erstellen, dieser Struktur andere XML-Strukturen hinzufügen, die XML-Struktur ändern und die XML-Struktur speichern.

Verwenden von "XDocument"

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

Der folgende Code erstellt ein XDocument-Objekt und die zugehörigen in ihm enthaltenen Objekte.

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

Wenn Sie sich die Datei <legacyBold>test.xml</legacyBold> ansehen, erhalten Sie die folgende Ausgabe:

<?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

Konzepte

Übersicht über die LINQ to XML-Programmierung