Visão geral da classe XDocument
A classe XDocument contém as informações necessárias para um documento XML válido, o que inclui uma declaração XML, instruções de processamento e comentários.
Observe que você só deverá criar objetos XDocument se precisar da funcionalidade específica fornecida pela classe XDocument. 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 de XDocument
Um XDocument pode conter os seguintes elementos:
- Um objeto XDeclaration. XDeclaration permite que você especifique 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 objeto XElement. Esse objeto é o nó raiz do documento XML.
- Qualquer número de objetos XProcessingInstruction. Uma instrução de processamento comunica informações a um aplicativo que processa o XML.
- Qualquer número de objetos XComment. Os comentários serão irmãos do elemento raiz.
- Um XDocumentType para o DTD.
Quando você serializa 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
(o padrão).
Por padrão, o LINQ to XML define a versão como "1.0" e a codificação como "utf-8".
Usar XElement sem XDocument
Conforme mencionado anteriormente, a classe XElement é a classe principal da interface de programação LINQ to XML. Em muitos casos, seu aplicativo não exigirá que você crie um documento. Usando a classe XElement, você pode:
- Criar uma árvore XML.
- Adicionar outras árvores XML a ela.
- Modificar a árvore XML.
- Salve-o.
Usar XDocument
Para construir um XDocument, use a construção funcional exatamente como você faz para criar objetos XElement.
O exemplo a seguir cria um objeto XDocument 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.-->