Salvando e escrevendo um documento
Quando você carrega e salvar XmlDocument, o documento salvo pode diferir do original das seguintes maneiras:
Se a propriedade PreserveWhitespace for definida como
true
antes que o método Save seja chamado, o espaço em branco no documento será preservado na saída; se essa propriedade forfalse
, o XmlDocument recua automaticamente a saída.Todos os espaços em branco entre atributos são reduzidos a um único caractere de espaço.
O espaço em branco entre elementos é alterado. O espaço em branco significativo é preservado e o espaço em branco insignificante não é. Mas quando o documento é salvo, ele usará o modo XmlTextWriter Recuo por padrão para imprimir ordenadamente a saída e torná-la mais legível.
O caractere de aspas usado ao redor de valores de atributo é alterado para aspas duplas por padrão. Você pode usar a propriedade QuoteChar em XmlTextWriter para definir o caractere de aspas para aspas duplas ou aspas simples.
Por padrão, as entidades de caracteres numéricos como
{
são expandidas.A marca de ordem de byte encontrada no documento de entrada não é preservada. O 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 escrever o XmlDocument em um arquivo ou um fluxo, a saída escreve o mesmo que o conteúdo do documento. Isto é, o XmlDeclaration é escrito somente se houver um contido no documento e a codificação usada ao escrever o documento é a mesma fornecida no nó de declaração.
Escrevendo um XmlDeclaration
Os membros XmlDocument e XmlDeclaration de OuterXml, InnerXml e WriteTo, além dos métodos XmlDocument de Save e de WriteContentTo, criam uma declaração XML.
Para as propriedades XmlDocument de OuterXml, InnerXml e Save, WriteTo, e os métodos WriteContentTo, a codificação escrita na declaração XML é obtida do nó XmlDeclaration. Se não houver nó XmlDeclaration, XmlDeclaration não será gravado. Se não houver codificação no nó XmlDeclaration, a codificação não será gravada na declaração XML.
Os métodos XmlDocument.Save e XmlDocument.Save sempre escrevem XmlDeclaration. Esses métodos utilizam a codificação do escritor para o qual eles estão escrevendo. Isto é, o valor de codificação no escritor 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 de saída out.xml
.
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 método Save, a declaração XML é escrita usando o método WriteStartDocument na classe XmlWriter. Portanto, substituir o método WriteStartDocument altera o modo como o início do documento é escrito.
Para os membros XmlDeclaration de OuterXml, WriteTo e InnerXml, se a propriedade Encoding não estiver definida, nenhuma codificação será gravada. Caso contrário, a codificação gravada na declaração XML será a mesma que a codificação encontrada na propriedade Encoding.
Escrevendo o conteúdo do documento usando a propriedade OuterXml
A propriedade OuterXml é uma extensão da Microsoft para os padrões DOM (Document Object Model) de XML do W3C (World Wide Web Consortium). A propriedade OuterXml é usada para obter a marcação do documento XML inteiro ou apenas a marcação de um único nó e seus nós filho. OuterXml retorna a marcação que representa o nó determinado 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 apenas 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;
Ao contrário, você pode usar a propriedade InnerText se quiser o conteúdo dos nós filho.