当前位置:网站首页>[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 '<!-- string -->'</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> * <!-- hello1 --> * </pre> * while: * <pre> * comment('hello2', [:]) * </pre> * will produce: * <pre> * <comment>hello2</comment> * </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>
边栏推荐
- Date类中日期转成指定字符串出现的问题及解决方法
- Leetcode Fibonacci sequence
- Hudi of data Lake (1): introduction to Hudi
- 7.5 decorator
- AtCoder Beginner Contest 258【比赛记录】
- How to make your own robot
- [QT] QT uses qjson to generate JSON files and save them
- Room cannot create an SQLite connection to verify the queries
- LeetCode 6005. The minimum operand to make an array an alternating array
- Gd32f4xx UIP protocol stack migration record
猜你喜欢
多线程与高并发(8)—— 从CountDownLatch总结AQS共享锁(三周年打卡)
FFT learning notes (I think it is detailed)
[EI conference sharing] the Third International Conference on intelligent manufacturing and automation frontier in 2022 (cfima 2022)
2022-02-13 work record -- PHP parsing rich text
About the slmgr command
MySql——CRUD
[designmode] composite mode
剖面测量之提取剖面数据
Notepad++ regular expression replacement string
Uniapp development, packaged as H5 and deployed to the server
随机推荐
[QT] QT uses qjson to generate JSON files and save them
JS can really prohibit constant modification this time!
Tools to improve work efficiency: the idea of SQL batch generation tools
Global and Chinese market of valve institutions 2022-2028: Research Report on technology, participants, trends, market size and share
Opencv classic 100 questions
MySQL functions
MySql——CRUD
N1 # if you work on a metauniverse product [metauniverse · interdisciplinary] Season 2 S2
【文件IO的简单实现】
Classic CTF topic about FTP protocol
猿桌派第三季开播在即,打开出海浪潮下的开发者新视野
Uniapp development, packaged as H5 and deployed to the server
建立时间和保持时间的模型分析
Key structure of ffmpeg -- AVCodecContext
如何制作自己的机器人
Notepad++ regular expression replacement string
2022.7.5-----leetcode. seven hundred and twenty-nine
Idea remotely submits spark tasks to the yarn cluster
Pointer pointer array, array pointer
[EI conference sharing] the Third International Conference on intelligent manufacturing and automation frontier in 2022 (cfima 2022)