当前位置:网站首页>[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>
边栏推荐
- LeetCode 6006. Take out the least number of magic beans
- FFmpeg学习——核心模块
- 小程序技术优势与产业互联网相结合的分析
- [designmode] adapter pattern
- Knowledge about the memory size occupied by the structure
- MySql——CRUD
- Idea remotely submits spark tasks to the yarn cluster
- Global and Chinese market of valve institutions 2022-2028: Research Report on technology, participants, trends, market size and share
- FFT learning notes (I think it is detailed)
- Gd32f4xx UIP protocol stack migration record
猜你喜欢

MDK debug时设置数据实时更新

Leetcode 450 deleting nodes in a binary search tree
![N1 # if you work on a metauniverse product [metauniverse · interdisciplinary] Season 2 S2](/img/f3/8e237296f5948dd0488441aa625182.jpg)
N1 # if you work on a metauniverse product [metauniverse · interdisciplinary] Season 2 S2

Basic introduction and source code analysis of webrtc threads

Spark AQE

Gavin teacher's perception of transformer live class - rasa project actual combat e-commerce retail customer service intelligent business dialogue robot system behavior analysis and project summary (4

Analysis of the combination of small program technology advantages and industrial Internet

Intranet Security Learning (V) -- domain horizontal: SPN & RDP & Cobalt strike

Classic CTF topic about FTP protocol
![[designmode] composite mode](/img/9a/25c7628595c6516ac34ba06121e8fa.png)
[designmode] composite mode
随机推荐
NLP generation model 2017: Why are those in transformer
[Online gadgets] a collection of online gadgets that will be used in the development process
MDK debug时设置数据实时更新
如何制作自己的機器人
Room cannot create an SQLite connection to verify the queries
Model analysis of establishment time and holding time
Search (DFS and BFS)
免费的聊天机器人API
Anconda download + add Tsinghua +tensorflow installation +no module named 'tensorflow' +kernelrestart: restart failed, kernel restart failed
LeetCode 6004. Get operands of 0
MySQL之函数
Permission problem: source bash_ profile permission denied
NLP text processing: lemma [English] [put the deformation of various types of words into one form] [wet- > go; are- > be]
devkit入门
FPGA内部硬件结构与代码的关系
Recognize the small experiment of extracting and displaying Mel spectrum (observe the difference between different y_axis and x_axis)
Power query data format conversion, Split Merge extraction, delete duplicates, delete errors, transpose and reverse, perspective and reverse perspective
Knowledge about the memory size occupied by the structure
Spark SQL UDF function
MIT博士论文 | 使用神经符号学习的鲁棒可靠智能系统