Groovy:XmlTemplateEngine和SimpleTemplateEngine

时间:2014-01-30 02:53:04

标签: xml groovy xslt-1.0

我一直在尝试将节点元素从一个xml文档复制到xsl文件,到目前为止我发现下面的解决方案效果很好:

        //file path variables are mocked

        def rep = new XmlParser().parse(new File(*filepath1*))
        def pw = new StringWriter()
        new XmlNodePrinter(new PrintWriter(pw)).print(rep)
        rep = pw.toString()

        def engine = new groovy.text.SimpleTemplateEngine()
        def binding = [responsexml:rep]
        def template = engine.createTemplate(new File(*filepath2*)).make(binding)

        new File(*filepath3*).write(template.toString())

模板化xsl文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    ${responsexml}
</xsl:template>
</xsl:stylesheet>

复制节点元素后,最终的xsl文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <AAA>
               *SOME CONTENT*
            </AAA>
</xsl:template>

好的...对于长期枯燥的背景感到抱歉,这是问题: 我使用上面的SimpleTemplateEngine,它生成了一个内容与预期一样的文件,但当我切换到使用XmlTemplateEngine时,该行     <?xml version="1.0" encoding="UTF-8"?> 已从生成的xsl文件中删除。

我想知道为什么XML引擎实际上没有按预期工作?这可能是一个非常古怪的问题,因为我对groovy很新...所以如果有人能指出我上面解释的文档,那将非常感谢。非常感谢!

1 个答案:

答案 0 :(得分:0)

看看http://groovy.codehaus.org/api/groovy/text/XmlTemplateEngine.html

XmlTemplateEngine删除xml声明作为处理指令的一部分。