2011-06-01 106 views
2

我创建了Groovy中使用MarkupBuilder的一个XML但我怎么记录到一个XML文件在我的项目文件目录E:\tomcat 5.5\webapps\csm\include\xml如何编写XML到使用MarkupBuilder的

def writer = new StringWriter() 
    def xml = new MarkupBuilder(writer) 
    String[] splitted 

    xml.rows() 
    { for(int i=0;i<lines.length-1;i++){ 
      row() 
      { 
       for(int j=0;j<lines[i].length();j++) 
       { 
        splitted= lines[i].split(','); 
       } 
       name(splitted[0]) 
       email(splitted[1]) 

      } 
     } 
    } 

这里println writer.toString()打印我的整个XML的内容,但我需要它在一个文件在我的Tomcat项目的xml目录

+0

使用java.io.FileWriter – Bohemian 2011-06-01 06:40:05

回答

5

而不是使用StringWriter,请使用FileWriter。还可以使用系统属性catalina.base获取Tomcat主路径。

def writer = new FileWriter(new File(System.getProperty("catalina.base") + "/webapps/csm/include/xml/yourfile.xml")) 

但请注意,它不是保存运行时生成文件的最佳位置。每次重新部署您的.war文件时,它们都将被删除。

+0

谢谢我设法得到一个答案我自己第一,也看到我的答案,但我会给它你:) – abi1964 2011-06-01 07:09:47

0

如何:

new File('E:\tomcat 5.5\webapps\csm\include\xml\Foo.xml') << writer.toString() 

不知道,如果你需要双逃逸\\上windoze文件路径...

+0

我不能给出一个绝对路径,我不知道如何为'E:\ tomcat 5.5 \ webapps \ csm \ include \ xml'dir提供相对路径,因为我也会在运行时使用这个工具 – abi1964 2011-06-01 06:43:15

+0

在运行时你能不能设置基于OS的路径?路径=胜利? 'E:\ ..':'/ linux/tomcat/dir' – virtualeyes 2011-06-01 06:50:50

+0

不,这是不可能的,我用'../webapps/csm/include/xml/data.xml'来代替, System.getProperty(“user.dir”)'设置我的路径到tomcat bin目录 – abi1964 2011-06-01 06:55:15

0

而不是使用一个StringWriter我以前FileWriter

,并作为路径,我没有

def writer = new FileWriter("../webapps/csm/include/xml/data.xml") 

最后这部作品:)

5

不从上述正确答案带走,但是你可以让你的代码Groovy

new File("${System.properties['catalina.base']}/webapps/csm/include/xml/yourfile.xml").withWriter { writer -> 
    def xml = new MarkupBuilder(writer) 

    xml.rows { 
    lines.each { line -> 
     row { 
     def splitted = line.split(',') 
     name(splitted[0]) 
     email(splitted[1]) 
     } 
    } 
    } 
} 
0
//class writer to write file 
def writer = new StringWriter(); 
//builder xml 
def xmlCreated = new MarkupBuilder(writer); 
//file where will be write the xml 
def fileXmlOut = new File("C:\\Users\\example\\Desktop\\example\\test.xml"); 

//method MarkupBuilder to xml  
xmlCreated.mkp.xmlDeclaration(version: "1.0", encoding: "utf-8"); 
xmlCreated.playlist() { 
    list() { 
     //xml = your file xml parse 
     name xml.list.name.text() 
    } 
    eventlist() { 
     event(type: [email protected])     
    } 
} 
//writing xml in file 
fileXmlOut << writer.toString(); 
+1

你能解释一下吗? – Miki 2014-10-03 14:23:28

+0

我更新我的评论 – 2015-10-15 15:58:52