2

groovyでMarkupBuilderを使用してxmlを作成しましたが、プロジェクトディレクトリの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ディレクトリ内のファイルに必要です。

4

5 に答える 5

6

上記の正解から離れないでください、しかしあなたはあなたのコードをもっともっと作ることができます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] )
      }
    }
  }
}
于 2011-06-01T08:07:38.000 に答える
5

を使用する代わりに、をStringWriter使用しFileWriterます。また、システムプロパティcatalina.baseを使用してTomcatホームパスを取得します。

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

ただし、ランタイムで生成されたファイルを保存するのに最適な場所ではないことに注意してください。ファイルを再デプロイするたびに削除され.warます。

于 2011-06-01T06:54:54.540 に答える
0

どうですか:

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

\\windozeでファイルパスを二重にエスケープする必要があるかどうかわからない...

于 2011-06-01T06:41:57.740 に答える
0

StringWriter私が使用する代わりにFileWriter

そして私がした道については

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

最後にこれは動作します:)

于 2011-06-01T06:52:04.543 に答える
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();
于 2014-10-03T14:21:28.097 に答える