当前位置:网站首页>[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>
边栏推荐
- Room cannot create an SQLite connection to verify the queries
- FFmpeg学习——核心模块
- LeetCode 6006. Take out the least number of magic beans
- Model analysis of establishment time and holding time
- MIT博士论文 | 使用神经符号学习的鲁棒可靠智能系统
- LeetCode 8. String conversion integer (ATOI)
- FFT learning notes (I think it is detailed)
- [designmode] Decorator Pattern
- Global and Chinese market of digital serial inverter 2022-2028: Research Report on technology, participants, trends, market size and share
- Spark获取DataFrame中列的方式--col,$,column,apply
猜你喜欢

时间戳的拓展及应用实例

The relationship between FPGA internal hardware structure and code

【DesignMode】装饰者模式(Decorator pattern)

Go learning - dependency injection

Spark AQE

Notepad + + regular expression replace String

Problems and solutions of converting date into specified string in date class

Key structure of ffmpeg - avformatcontext

如何解决ecology9.0执行导入流程流程产生的问题
![[noi simulation] Anaid's tree (Mobius inversion, exponential generating function, Ehrlich sieve, virtual tree)](/img/d6/c3128e26d7e629b7f128c551cd03a7.png)
[noi simulation] Anaid's tree (Mobius inversion, exponential generating function, Ehrlich sieve, virtual tree)
随机推荐
Problems and solutions of converting date into specified string in date class
电机的简介
Determinant learning notes (I)
notepad++正则表达式替换字符串
Global and Chinese markets of universal milling machines 2022-2028: Research Report on technology, participants, trends, market size and share
Model analysis of establishment time and holding time
The global and Chinese markets of dial indicator calipers 2022-2028: Research Report on technology, participants, trends, market size and share
MySql——CRUD
LeetCode 6005. The minimum operand to make an array an alternating array
数据分析思维分析方法和业务知识——分析方法(二)
Classic CTF topic about FTP protocol
MySQL storage engine
Key structure of ffmpeg -- AVCodecContext
Key structure of ffmpeg - avframe
Start from the bottom structure and learn the introduction of fpga---fifo IP core and its key parameters
2022.7.5-----leetcode. seven hundred and twenty-nine
【DesignMode】组合模式(composite mode)
Global and Chinese market of water heater expansion tank 2022-2028: Research Report on technology, participants, trends, market size and share
Power query data format conversion, Split Merge extraction, delete duplicates, delete errors, transpose and reverse, perspective and reverse perspective
[EI conference sharing] the Third International Conference on intelligent manufacturing and automation frontier in 2022 (cfima 2022)