Přehled třídy XDocument

Třída XDocument obsahuje informace potřebné pro platný dokument XML, který obsahuje deklaraci XML, pokyny ke zpracování a komentáře.

Objekty musíte vytvořit XDocument pouze v případě, že potřebujete konkrétní funkce poskytované XDocument třídou. Za mnoha okolností můžete pracovat přímo s XElement. Práce přímo s XElement je jednodušší programovací model.

XDocument je odvozen od , XContainertakže může obsahovat podřízené uzly. XDocument Objekty však mohou mít pouze jeden podřízený XElement uzel. To odráží standard XML, že v dokumentu XML může být pouze jeden kořenový prvek.

Komponenty XDocument

Může XDocument obsahovat následující prvky:

  • Jeden XDeclaration objekt. XDeclaration umožňuje určit relevantní části deklarace XML: verzi XML, kódování dokumentu a to, zda je dokument XML samostatný.
  • Jeden XElement objekt. Tento objekt je kořenovým uzlem dokumentu XML.
  • Libovolný počet XProcessingInstruction objektů Instrukce zpracování předává informace aplikaci, která zpracovává XML.
  • Libovolný počet XComment objektů Komentáře budou na stejné úrovni jako kořenový prvek.
  • Jeden XDocumentType pro DTD.

Při serializaci XDocument, i pokud XDocument.Declaration je null, výstup bude mít xml deklarace, pokud zapisovač má Writer.Settings.OmitXmlDeclaration nastavenou false (výchozí).

Ve výchozím nastavení nastaví LINQ to XML verzi na 1.0 a nastaví kódování na utf-8.

Použití XElement bez XDocument

Jak jsme již zmínili, XElement třída je hlavní třídou v programovacím rozhraní LINQ to XML. V mnoha případech aplikace nebude vyžadovat, abyste vytvořili dokument. Pomocí XElement třídy můžete:

  • Vytvořte strom XML.
  • Přidejte do něj další stromy XML.
  • Upravte strom XML.
  • Uložte ho.

Použití XDocument

Chcete-li vytvořit , XDocumentpoužít funkční konstrukce, stejně jako vy stavět XElement objekty.

Následující příklad vytvoří XDocument objekt a jeho přidružené obsažené objekty.

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

Příklad vytvoří tento výstup v 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.-->

Viz také