我一直在尝试将节点元素从一个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很新...所以如果有人能指出我上面解释的文档,那将非常感谢。非常感谢!
答案 0 :(得分:0)
看看http://groovy.codehaus.org/api/groovy/text/XmlTemplateEngine.html
XmlTemplateEngine删除xml声明作为处理指令的一部分。