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 forfalse
, 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.xml
de 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.