我在groovy中使用MarkupBuilder创建了一个xml,但是我如何将它写入我的项目目录E:\tomcat 5.5\webapps\csm\include\xml
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 :(得分:5)
不使用StringWriter
,而是使用FileWriter
。还可以使用系统属性catalina.base
来获取Tomcat主路径。
def writer = new FileWriter(new File(System.getProperty("catalina.base") + "/webapps/csm/include/xml/yourfile.xml"))
但请注意,它不是保存运行时生成的文件的最佳位置。每次重新部署.war
文件时,都会删除它们。
答案 1 :(得分: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] )
}
}
}
}
答案 2 :(得分:0)
怎么样:
new File('E:\tomcat 5.5\webapps\csm\include\xml\Foo.xml') << writer.toString()
不确定是否需要在windoze上双重转义\\
文件路径...
答案 3 :(得分:0)
而不是使用StringWriter
我使用FileWriter
以及我所做的路径
def writer = new FileWriter("../webapps/csm/include/xml/data.xml" )
最后这个有效:)
答案 4 :(得分: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: example.eventlist.@type)
}
}
//writing xml in file
fileXmlOut << writer.toString();