2014-01-30 63 views
0

我一直在試圖節點元素從一個XML文檔複製到一個XSL文件,到目前爲止,我發現下面的解決方案工作得很好:Groovy:在XmlTemplateEngine和SimpleTemplateEngine

 //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非常陌生......所以如果有人能夠指出我上面解釋的doc,我將非常感謝。非常感謝!

回答

0

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

XmlTemplateEngine除去XML聲明作爲處理指令的一部分。

+0

謝謝,頁面可能會提及隱式刪除xml聲明,我只注意到從第一次讀取該示例時刪除了「gsp」命名空間。 那麼用這個引擎去除這些聲明有什麼直接的好處呢? –