Pular para o conteúdo principal

Como remover espaços e quebra de linha de documentos XML

A dica de hoje (após um longo e tenebroso inverno, que a propósito continua aqui no Paraná) nasceu de um incêndio que precisou ser apagado nos projetos da vida com prazo de entrega pra “ontem”… mas, vamos a parte divertida.

No Framework .NET a geração de documentos XML é facilitada de várias formas. Vamos partir do código abaixo para gerar um documento simples usando apenas System.Xml.

var xmlDoc = new XmlDocument();
XmlElement raiz = xmlDoc.CreateElement("artigo");
XmlElement Id = xmlDoc.CreateElement("id");
Id.InnerText = "08072011";
XmlElement Titulo = xmlDoc.CreateElement("titulo");
Titulo.InnerText = "Como remover espaços e quebra de linha de documentos XML";
XmlElement Vazio = xmlDoc.CreateElement("vazio");
Vazio.InnerText = String.Empty;
raiz.AppendChild(Id);
raiz.AppendChild(Titulo);
raiz.AppendChild(Vazio);
xmlDoc.AppendChild(raiz);
xmlDoc.Save(@"d:\teste.xml");


O código acima gera o arquivo “teste.xml” que ao ser visualizado em um editor como o bloco de notas apresenta o resultado abaixo.

image



Note que o elemento “Vazio”, originalmente criado para ficar, veja só, vazio, apresentou um conteúdo: embora não vejamos, o conteúdo do campo contém um retorno de carro e um avanço de linha.



Estes podem ser visualizados em um editor mais avançado como o Notepad++ que vai apresentar o resultado da próxima figura.



image



Lembre de clicar na ferramenta para exibir todos os caracteres.



Como diz “O Guia dos Mochileiros da Galáxia”: Don´t Panic!



Para corrigir este problema e remover os espaços em branco e também quebras de linha, basta usar um objeto XmlTextWriter para escrever o arquivo Xml em vez do nome do arquivo, para isto, substitua a última linha para o código que está descrito a seguir.





//xmlDoc.Save(@"d:\teste.xml");
using(XmlTextWriter xmlWriter= new XmlTextWriter(@"d:\teste.xml", null))
{
xmlWriter.Formatting = Formatting.None;
xmlDoc.Save(xmlWriter);
}



 


A classe XmlTextWriter implementa a interface IDisposable e é uma boa prática que seja instanciado dentro de um bloco “using” principalmente se o documento Xml criado precisar ser lido por outro processo logo após a sua criação.


 


Com isso, o arquivo é gravado sem a indentação dos nós e sem quebras de linhas:



image



Até a próxima.




Postagens mais visitadas deste blog

Como gerar scripts para exportar dados no SQL Server 2008

Uma das tarefas mais comuns no trabalho com desenvolvimento de software que consome dados em bancos como o SQL Server 2008 é a necessidade de em algum momento precisarmos exportar os dados de um banco para outro. Quer seja para realizar testes ou fazer simulações existem várias maneiras de se fazer isto. Neste post eu quero demonstrar um recurso do SQL Server Management Studio (SSMS) que permite realizar esta tarefa rapidamente.Para os que estão acostumados a usar esta ferramenta, já devem saber que é possível gerar scripts para o schema e também transferir os dados entre dois bancos distintos. Isto pode ser feito se o SSMS puder conectar-se com as duas bases, de origem e destino. No exemplo que vou dar, o objetivo é gerar o script apenas para uma tabela do banco de dados de exemplo da Microsoft – Northwind.1. Iniciando o assistenteO assistente deve ser iniciado clicando com o botão direito do mouse sobre o banco onde se encontra a tabela a qual iremos gerar o script. Deve se clicar n…

Pivot dinâmico com SQL Server

Passo a passo para usar pivoteamento dinâmicoOs bancos de dados bem configurados e definidos armazenam os dados de forma a otimizar o acesso, evitando duplicidade e garantindo a integridade. Porém, em muitas situações isto pode dificultar a apresentação de forma adequada sendo necessário preparar os dados usando vários recursos entre os quais, fazer o pivoteamento.Se você não precisou ainda usar ou não sabe o que é consiste em transformar cada linha de uma determinada coluna em colunas de uma nova consulta.Assim, considere uma tabela que armazene as notas bimestrais de um boletim. Uma possível estrutura para esta tabela seria algo assim:ColunaTipo de dado/TamanhoDisciplinanvarchar(50)BimestreIntNotanumeric(5,2)Uma consulta select nesta tabela com alguns dados traria um resultado parecido com o abaixo:Porém pode ser que para apresentar estes dados em um relatório seja necessário transformar cada bimestre em uma coluna e agrupar as notas nestas colunas para que fique dessa forma:Isto po…