如何使用`XMLNodePrinter`将xml数据保存到文件中

时间:2014-02-14 14:02:38

标签: xml groovy

我刚开始学习groovy。

我的第一个任务是创建一个XML文档并将其保存到光盘上的文件中。一切正常,直到我不想将document存储到光盘(我最后使用Transformer进行输出)。

有没有办法使用XMLNodePrinter将xml数据存储到文件中。这是我的代码(现在它只是创建一个空白文件):

    // CREATING XML FILES WITH GROOVY:
    def builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    def document = builder.newDocument();
    def root = document.createElement("root_node");

    // SIMPLE XML DATA
    for(i in 0..5){
        root.setAttribute("attr" + i, "val" + i);
        def childElement = document.createElement("childNode");
        childElement.setTextContent("" + i);
        root.appendChild(childElement);
    }

    // printing the data to console
    def myXMLFile = "myFirstXML.xml";
    File f  = new File(myXMLFile);
    def writer = new FileWriter(f);     
    new XmlNodePrinter(new PrintWriter(writer)).print(root);

1 个答案:

答案 0 :(得分:1)

您可以使用MarkupBuilder

import groovy.xml.*

new File( 'myFirstXML.xml' ).withWriter { w ->
    def attributes = (0..5).collectEntries { [ "attr$it", "val$it" ] }
    new MarkupBuilder( w ).root_node( attributes ) {
        (0..5).each { i ->
            childNode( "$i" )
        }
    }
}

创建一个文件myFirstXML.xml,其中包含:

<root_node attr0='val0' attr1='val1' attr2='val2' attr3='val3' attr4='val4' attr5='val5'>
  <childNode>0</childNode>
  <childNode>1</childNode>
  <childNode>2</childNode>
  <childNode>3</childNode>
  <childNode>4</childNode>
  <childNode>5</childNode>
</root_node>