Partilhar via


Guardar e escrever um documento

Quando você carrega e salva um XmlDocument, o documento salvo pode diferir do original das seguintes maneiras:

  • Se a PreserveWhitespace propriedade for definida como true antes do Save método ser chamado, o espaço em branco no documento será preservado na saída, se essa propriedade for false, XmlDocument recuará automaticamente a saída.

  • Todo o espaço em branco entre atributos é reduzido a um único caractere de espaço.

  • O espaço em branco entre os elementos é alterado. Espaço em branco significativo é preservado e espaço em branco insignificante não. Mas quando o documento é salvo, ele usará o modo de recuo XmlTextWriter por padrão para imprimir a saída para torná-la mais legível.

  • O caractere de aspas usado em torno dos valores de atributo é alterado para aspas duplas por padrão. Você pode usar a QuoteChar propriedade on XmlTextWriter para definir o caractere de aspas como aspas duplas ou aspas simples.

  • Por padrão, entidades de caracteres numéricos como { são expandidas.

  • A marca de ordem de bytes encontrada no documento de entrada não é preservada. UCS-2 é salvo como UTF-8, a menos que você crie explicitamente uma declaração XML que especifica uma codificação diferente.

  • Se você quiser gravar o XmlDocument em um arquivo ou fluxo, a saída gravada é a mesma que o conteúdo do documento. Ou seja, o XmlDeclaration é escrito apenas se houver um contido no documento, e a codificação usada ao escrever o documento é a mesma codificação dada no nó da declaração.

Escrevendo um XmlDeclaration

Os XmlDocument e XmlDeclaration membros de OuterXml, InnerXml, e WriteTo, além dos XmlDocument métodos de Save e WriteContentTo, criam uma declaração XML.

Para as XmlDocument propriedades de OuterXml, InnerXmle os Savemétodos , WriteTo, e , a WriteContentTo codificação escrita na declaração XML é retirada do XmlDeclaration nó. Se não houver nó XmlDeclaration , XmlDeclaration não é escrito. Se não houver codificação no nó, a XmlDeclaration codificação não será escrita na declaração XML.

Os XmlDocument.Save métodos e XmlDocument.Save sempre escrevem um XmlDeclarationarquivo . Esses métodos tomam a codificação do gravador para o qual ele está escrevendo. Ou seja, o valor de codificação no gravador substitui a codificação no documento e no XmlDeclaration. Por exemplo, o código a seguir não escreve uma codificação na declaração XML encontrada no arquivo out.xmlde saída.

Dim doc As New XmlDocument()  
Dim tw As XmlTextWriter = New XmlTextWriter("out.xml", Nothing)  
doc.Load("text.xml")  
doc.Save(tw)  
XmlDocument doc = new XmlDocument();  
XmlTextWriter tw = new XmlTextWriter("out.xml", null);  
doc.Load("text.xml");  
doc.Save(tw);  

Para o Save método, a declaração XML é escrita usando o WriteStartDocument método na XmlWriter classe. Portanto, substituir o método altera como WriteStartDocument o início do documento é escrito.

Para os XmlDeclaration membros de OuterXml, WriteToe , se InnerXmla Encoding propriedade não estiver definida, nenhuma codificação será gravada. Caso contrário, a codificação escrita na declaração XML é a mesma que a codificação encontrada na Encoding propriedade.

Escrevendo conteúdo do documento usando a propriedade OuterXml

A OuterXml propriedade é uma extensão da Microsoft para os padrões DOM (Document Object Model) XML do W3C (World Wide Web Consortium). A OuterXml propriedade é usada para obter a marcação de todo o documento XML, ou apenas a marcação de um único nó e seus nós filho. OuterXml Retorna a marcação que representa o nó fornecido e todos os seus nós filho.

O exemplo de código a seguir mostra como salvar um documento em sua totalidade como uma cadeia de caracteres.

Dim mydoc As New XmlDocument()  
' Perform application needs here, like mydoc.Load("myfile");  
' Now save the entire document to a string variable called "xml".  
Dim xml As String = mydoc.OuterXml  
XmlDocument mydoc = new XmlDocument();  
// Perform application needs here, like mydoc.Load("myfile");  
// Now save the entire document to a string variable called "xml".  
string xml = mydoc.OuterXml;  

O exemplo de código a seguir mostra como salvar somente o elemento do documento.

' For the content of the Document Element only.  
Dim xml As String = mydoc.DocumentElement.OuterXml  
// For the content of the Document Element only.  
string xml = mydoc.DocumentElement.OuterXml;  

Por outro lado, você pode usar a InnerText propriedade se quiser o conteúdo de nós filho.

Consulte também