当前位置:网站首页>[groovy] XML serialization (use markupbuilder to generate XML data | create sub tags under tag closures | use markupbuilderhelper to add XML comments)

[groovy] XML serialization (use markupbuilder to generate XML data | create sub tags under tag closures | use markupbuilderhelper to add XML comments)

2022-07-06 00:34:00 Programmer community

List of articles

  • One 、 Create sub tags under tag closures
  • Two 、 Use MarkupBuilderHelper add to xml notes
  • 3、 ... and 、 Complete code example

One 、 Create sub tags under tag closures


In the last blog 【Groovy】xml serialize ( Use MarkupBuilder Generate xml data ) Generated xml On the basis of documents , If you want it under the label , Create sub tags , As follows <team> Create under the label <member> label ;

<student>    <name code="utf-8">Tom</name>    <age>18</age>    <team>        <member>Jerry</member>    </team></student>

In the closure that creates the tag , Nest and create labels again ;

markupBuilder.student{ 
        //  Create a sub tag under the tag     team() { 
            member("Jerry") { 
    }    }}

The complete code is as follows :

//  Generate the above  xml  file markupBuilder.student{ 
        //  The format is as follows  :    // xml  Tag name (  Label content  ,  Tag attributes  :  Tag attribute value )    //  Generate label content  :  Just write the label directly     //  Generate tag attributes  :  Tag attributes are generated using key value pairs     name("Tom", code: "utf-8") { 
        }    age(18) { 
    }    //  Create a sub tag under the tag     team() { 
            member("Jerry") { 
    }    }}

Two 、 Use MarkupBuilderHelper add to xml notes


In a closure, you can use mkp obtain MarkupBuilderHelper object , This object can help add xml notes ;

    /** *  attribute , This property can be called from the generator closure to access helper methods , *  namely  {@link MarkupBuilderHelper#yield(String)}, * {@link MarkupBuilderHelper#yieldUnescaped(String)}, * {@link MarkupBuilderHelper#pi(Map)}, * {@link MarkupBuilderHelper#xmlDeclaration(Map)} and * {@link MarkupBuilderHelper#comment(String)}. * * @return this MarkupBuilder */    public MarkupBuilderHelper getMkp() { 
            return new MarkupBuilderHelper(this);    }

MarkupBuilderHelper Class provides some methods , among comment Method , Can be used to add comments ;

public class MarkupBuilderHelper { 
        private final MarkupBuilder builder;    /** *  Generate comments in the output . * <p> * <code>mkp.comment 'string'</code> is equivalent to * <code>mkp.yieldUnescaped '&lt;!-- string --&gt;'</code>. * To create an element with the name 'comment', you need * to supply empty attributes, e.g.: * <pre> * comment('hello1') * </pre> * or * <pre> * mkp.comment('hello1') * </pre> * will produce: * <pre> * &lt;!-- hello1 --&gt; * </pre> * while: * <pre> * comment('hello2', [:]) * </pre> * will produce: * <pre> * &lt;comment&gt;hello2&lt;/comment&gt; * </pre> * * @param value the text within the comment. */    public void comment(String value) { 
            yieldUnescaped("<!-- " + value + " -->");    }}

Use in closures mkp.comment(" The student's name ") Code , Can generate <!-- The student's name --> notes ;

markupBuilder.student{ 
        mkp.comment(" The student's name ")}

3、 ... and 、 Complete code example


Complete code example :

import groovy.xml.MarkupBuilder"""<student> <name code="utf-8">Tom</name> <age>18</age> <team> <member>Jerry</member> </team></student>"""def fileWriter = new FileWriter(new File("a.xml"))//  establish  MarkupBuilder  object //  Constructor passed in  FileWriter  It means that you will  xml  Write the file into the file def markupBuilder = new MarkupBuilder(fileWriter)//  Generate the above  xml  file markupBuilder.student{ 
        //  The format is as follows  :    // xml  Tag name (  Label content  ,  Tag attributes  :  Tag attribute value )    //  Generate label content  :  Just write the label directly     //  Generate tag attributes  :  Tag attributes are generated using key value pairs     name("Tom", code: "utf-8") { 
        }    mkp.comment(" The student's name ")    age(18) { 
    }    mkp.comment(" Student age ")    //  Create a sub tag under the tag     team() { 
            member("Jerry") { 
    }    }    mkp.comment(" Team members ")}

Execution results :

<student>  <name code='utf-8'>Tom</name><!--  The student's name  -->  <age>18</age><!--  Student age  -->  <team>    <member>Jerry</member>  </team><!--  Team members  --></student>

 Insert picture description here

原网站

版权声明
本文为[Programmer community]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140223050644.html