2017-02-16 100 views
0

我想创建一个XML并将其保存在一个文件中。以下是代码的一部分使用groovy问题创建XML

def fileWriter = new FileWriter("c:/temp/test.xml") 
    def xml = new groovy.xml.MarkupBuilder(fileWriter).event { 
    event ("xmlns" : "http://www.hp.com/2009/software/opr/data_model") { 
     state("closed") 
    } 
// fileWriter.close();   
    } 
    fileWriter.close(); 

这工作正常,并在c:\ temp \ Directory中创建一个XML文件。

这就是它的样子。

<event> 
<event xmlns='http://www.hp.com/2009/software/opr/data_model'> 
<state>closed</state> 
</event> 
</event> 

,但我想要的只是

<event xmlns='http://www.hp.com/2009/software/opr/data_model'> 
<state>closed</state> 
</event> 

如何我第一次也是最后避免XML输出?

+0

请仔细阅读并遵守http://stackoverflow.com/help/someone-answers ;-) – Vampire

回答

2

摆脱额外event

import groovy.xml.MarkupBuilder 

def fileWriter = new FileWriter("c:/temp/test.xml") 

new MarkupBuilder(fileWriter).event("xmlns": "http://www.hp.com/2009/software/opr/data_model") { 
    state("closed") 
} 

fileWriter.close(); 
+0

谢谢。我工作了。我试图删除第一个错误的事件标签。 –

2

你打电话时的两倍,因此你得到两个事件代码。
调用一次,你只能得到一个。
Besidest,我会建议使用withWriter()

new File(/c:\temp\test.xml/).withWriter { 
    def xml = new groovy.xml.MarkupBuilder(it).event(xmlns: 'http://www.hp.com/2009/software/opr/data_model') { 
    state 'closed' 
    } 
} 

无需手动关闭编写即可。