xml元素扩展到多行

时间:2017-07-15 17:00:16

标签: xml groovy

我有一个如下所示的Xml文件:( xml的一部分)

<timestamp>${timestamp}</timestamp>
    <registered>true</registered>
    <Person>
        <name>${name}</name>
        <age>${age}</age>
        <height>${height}</height>
    </person>
    ...

我正在使用Groovy XtmTemplateEngine将值传递给xml

def engine = new groovy.text.XmlTemplateEngine()
def template = engine.createTemplate(xmlFile).make(binding)

绑定是一个包含我需要注入xml的所有值的Map。我面临的问题是注入后生成的文件看起来像这样

<timestamp>
    ${timestamp}
</timestamp>
    <registered>
         true
    </registered>
    <Person>
        <name>
            ${name}
        </name>
        <age>
            ${age}
        </age>
        <height>
            ${height}
        </height>
    </person> 

按预期注入值,但元素在多行中展开。在使用xmlTemplateEngine处理xml文件后,有没有办法将xml文件恢复为其初始格式?

我尝试使用XmlUtils.serialize()打印它,但结果是一样的。

编辑::因为我没有找到任何方法来保留文件的原始格式,我最终使用SimpleTemplateEngine。如daggett所述,使用&lt; %%&gt;与&lt;具有相同的结果gsp:scriptlet&gt;

1 个答案:

答案 0 :(得分:0)

似乎无法使用XmlTemplateEngine保留原始格式

如果您不需要xml验证,XmlTemplateEngine的其他功能会尝试使用GStringTemplateEngine。

它保留了原始格式

def tpl='''
<root>
<timestamp>${timestamp}</timestamp>
    <registered>true</registered>
    <Person>
        <name>${name}</name>
        <age>${age}</age>
        <height>${height}</height>
    </Person>
</root>'''

def engine = new groovy.text.GStringTemplateEngine()
def template = engine.createTemplate(tpl).make([
    timestamp: new Date(),
    name: 'mama & mia',
    age: 12,
    height: 175
])