Não tenho certeza se isso é relevante para o seu problema.
Eu escrevi uma pequena ferramenta (no powershell, de todas as coisas) que aplica os dados em um arquivo csv a um modelo. Cada registro no csv fornece valores reais para uma expansão do modelo, com variáveis no modelo substituídas por valores reais do csv. Usando o modelo apropriado, você pode obter a saída em praticamente qualquer formato desejado, embora esteja armazenado em um arquivo de texto.
Esta ferramenta pode não ser adequada aos seus objetivos, mas a mesma ferramenta pode ser implementada em vários idiomas diferentes, com um pouco de trabalho.
Ok, aqui vai ... Provavelmente é um powershell cruddy, porque isso é apenas um exercício de aprendizado para mim. Mas funciona bem para mim. A saída vai para o pipeline por padrão, mas é fácil redirecionar a saída para um arquivo. Pode ser mais fácil seguir se eu adicionei um arquivo csv de amostra e um modelo.
<# This function is a table driven template tool.
It's a refinement of an earlier attempt.
It generates output from a template and
a driver table. The template file contains plain
text and embedded variables. The driver table
(in a csv file) has one column for each variable,
and one row for each expansion to be generated.
5/13/2015
#>
function Expand-csv {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string] $driver,
[Parameter(Mandatory=$true)]
[string] $template
)
Process
{
$OFS = "'r'n"
$list = Import-Csv $driver
[string]$pattern = Get-Content $template
foreach ($item in $list) {
foreach ($key in $item.psobject.properties) {
Set-variable -name $key.name -value $key.value
}
$ExecutionContext.InvokeCommand.ExpandString($pattern)
}
}
}