Compartilhar via


Visão geral da classe XDocument

A XDocument classe contém as informações necessárias para um documento XML válido, que inclui uma declaração XML, instruções de processamento e comentários.

Você só precisará criar XDocument objetos se precisar da funcionalidade específica fornecida pela XDocument classe. Em muitas circunstâncias, você pode trabalhar diretamente com XElement. Trabalhar diretamente com XElement é um modelo de programação mais simples.

XDocument deriva de XContainer, portanto, ele pode conter nós filho. Entretanto, os objetos XDocument podem ter apenas um nó XElement filho. Isso reflete o padrão XML de que pode haver apenas um elemento raiz em um documento XML.

Componentes do XDocument

Um XDocument pode conter os seguintes elementos:

  • Um XDeclaration objeto. XDeclaration permite especificar as partes pertinentes de uma declaração XML: a versão XML, a codificação do documento e se o documento XML é autônomo.
  • Um XElement objeto. Esse objeto é o nó raiz do documento XML.
  • Qualquer número de XProcessingInstruction objetos. Uma instrução de processamento comunica informações a um aplicativo que processa o XML.
  • Qualquer número de XComment objetos. Os comentários serão irmãos do elemento raiz.
  • Um XDocumentType para o DTD.

Quando você serializar um XDocument, mesmo que XDocument.Declaration seja null, a saída terá uma declaração XML se o gravador tiver Writer.Settings.OmitXmlDeclaration definido como false, que é o padrão.

Por padrão, LINQ to XML define a versão como "1.0" e define a codificação como "utf-8".

Usar XElement sem XDocument

Como mencionado anteriormente, a XElement classe é a classe principal na interface de programação LINQ to XML. Em muitos casos, seu aplicativo não exigirá que você crie um documento. Usando a XElement classe, você pode:

  • Crie uma árvore XML.
  • Adicione outras árvores XML a ela.
  • Modifique a árvore XML.
  • Salve-o.

Usar XDocument

Para construir um XDocument, utilize métodos de construção funcional, assim como você faz para criar objetos XElement.

O exemplo a seguir cria um XDocument objeto e seus objetos contidos associados.

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

O exemplo produz essa saída em 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.-->

Consulte também