Ontem realizei uma tarefa aqui na Siteware para gerar um arquivo baseado em um template e achei uma solução interessante.

Usei o engine do NVelocity para processar o meu arquivo de template e ficou muito legal, portanto vou compartilhar o que aprendi.

Usando o template abaixo.

Cliente: $cliente.Nome    Idade: $cliente.Idade.ToString('N0')
Telefones:
#foreach($telefone in $cliente.Telefones)
$telefone
#end

Quero produzir o seguinte resultado.

Cliente: Douglas Aguiar    Idade: 27
Telefones:
+55 31 8635-9259
+55 31 3286-4988

Primeiramente é necessário baixar o assembly do NVelocity.

Após baixar o assembly você terá que referenciar a seguinte dll:

  • NVelocity

Depois basta implementar o código abaixo:

Classe de teste:

Na linha 15 construo um StringBuilder como o template.
Na linha 22 inicializo o engine do NVelocity.
Na linha 23 construo o contexto do NVelocity.
Na linha 25 construo um objeto do tipo Cliente.
Na linha 29 adiciono este objeto ao contexto do NVelocity, isto é muito legal no NVelocity, eu posso adicionar qualquer objeto e ter acesso a suas propriedades e métodos, no template que mostro logo abaixo eu uso o método ToString da propriedade Idade passando um parâmetro para formatar este número.
Já na linha 33 faço com que o NVelocity processe o template baseado nos objeto que passei para o contexto.

Classe Cliente usada pela classe NVelocityTemplateTeste.

O NVelocity também é um ViewEgine que pode ser utilizado com o ASP .NET MVC e com o MonoRail, que são dois frameworks MVC para ASP .NET.

Neste post do Chad Myers podemos ver como utilizar o NVelocity ViewEngine com o ASP .NET MVC.

Como no exemplo que demonstrei temos inúmeras aplicações para o NVelocity, como templates de e-mail, formatações customizadas, manipulação de arquivos texto que necessite manipular coleções e dentre outras aplicações que sua imaginação permitir. Podemos trabalha até com arquivos.

Download do projeto exemplo no bitbucket.

Fica ai a dica!