当前位置:网站首页>[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>
边栏推荐
- wx. Getlocation (object object) application method, latest version
- Spark SQL空值Null,NaN判断和处理
- FFT learning notes (I think it is detailed)
- NLP generation model 2017: Why are those in transformer
- 云导DNS和知识科普以及课堂笔记
- STM32按键消抖——入门状态机思维
- 《强化学习周刊》第52期:Depth-CUPRL、DistSPECTRL & Double Deep Q-Network
- FPGA内部硬件结构与代码的关系
- FFmpeg抓取RTSP图像进行图像分析
- LeetCode 6005. The minimum operand to make an array an alternating array
猜你喜欢

Hardware and interface learning summary

Hudi of data Lake (1): introduction to Hudi

Gd32f4xx UIP protocol stack migration record

FPGA内部硬件结构与代码的关系
![Atcoder beginer contest 258 [competition record]](/img/e4/1d34410f79851a7a81dd8f4a0b54bf.gif)
Atcoder beginer contest 258 [competition record]

Room cannot create an SQLite connection to verify the queries

notepad++正則錶達式替換字符串

State mode design procedure: Heroes in the game can rest, defend, attack normally and attack skills according to different physical strength values.

Recognize the small experiment of extracting and displaying Mel spectrum (observe the difference between different y_axis and x_axis)

Leetcode:20220213 week race (less bugs, top 10% 555)
随机推荐
NLP text processing: lemma [English] [put the deformation of various types of words into one form] [wet- > go; are- > be]
Classic CTF topic about FTP protocol
Key structure of ffmpeg - avframe
常用API类及异常体系
Basic introduction and source code analysis of webrtc threads
如何制作自己的機器人
Atcoder beginer contest 254 [VP record]
DEJA_ Vu3d - cesium feature set 055 - summary description of map service addresses of domestic and foreign manufacturers
Codeforces Round #804 (Div. 2)【比赛记录】
LeetCode 6004. Get operands of 0
猿桌派第三季开播在即,打开出海浪潮下的开发者新视野
剖面测量之提取剖面数据
小程序技术优势与产业互联网相结合的分析
如何制作自己的机器人
Leetcode Fibonacci sequence
An understanding of & array names
Global and Chinese market of digital serial inverter 2022-2028: Research Report on technology, participants, trends, market size and share
STM32 configuration after chip replacement and possible errors
KDD 2022 | 脑电AI助力癫痫疾病诊断
Recognize the small experiment of extracting and displaying Mel spectrum (observe the difference between different y_axis and x_axis)