2017-02-16 2 views
0

Я хочу создать XML и сохранить его в файле. ниже является частью кодасоздать XML, используя groovy issue

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(); 

это прекрасно работает и создает XML-файл в каталоге c: \ temp \ Directory.

и вот как это выглядит.

<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

Спасибо. я работал. Я пытался удалить первый тег Event, который давал ошибку. –

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' 
    } 
} 

Нет необходимости вручную закрыть писатель тогда.

Смежные вопросы