Freigeben über


Übersicht über die XDocument-Klasse

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

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

XDocument wird von XContainer abgeleitet, sodass es untergeordnete Knoten enthalten kann. XDocument Objekte können jedoch nur einen untergeordneten XElement Knoten aufweisen. Dies spiegelt den XML-Standard wider, dass nur ein Stammelement in einem XML-Dokument vorhanden sein kann.

Komponenten von XDocument

Eine XDocument kann die folgenden Elemente enthalten:

  • Ein XDeclaration Objekt. XDeclaration ermöglicht es Ihnen, die relevanten Teile einer XML-Deklaration anzugeben: die XML-Version, die Codierung des Dokuments und ob das XML-Dokument eigenständig ist.
  • Ein XElement Objekt. Dieses Objekt ist der Stammknoten des XML-Dokuments.
  • Eine beliebige Anzahl von XProcessingInstruction Objekten. Eine Verarbeitungsanweisung kommuniziert Informationen an eine Anwendung, die den XML-Code verarbeitet.
  • 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" fest und legt die Codierung auf "utf-8" fest.

Verwenden Sie XElement ohne XDocument

Wie bereits erwähnt, ist die XElement Klasse die Hauptklasse in der LINQ to XML-Programmierschnittstelle. In vielen Fällen erfordert Ihre Anwendung nicht, dass Sie ein Dokument erstellen. Mithilfe der XElement Klasse können Sie folgende Aktionen ausführen:

  • Erstellen Sie einen XML-Baum.
  • Hinzufügen weiterer XML-Strukturen
  • Ändern Sie den XML-Baum.
  • Speichern Sie sie.

Verwenden von XDocument

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

Im folgenden Beispiel wird 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