在Groovy中使用XML MarkupBuilder动态添加多个XML元素容器

在Groovy中使用XML MarkupBuilder动态添加多个XML元素容器,第1张

概述我正在使用Groovy MarkupBuilder生成 XML. 所需的XML是这种形式(简化): <Order> <StoreID /> <City /> <Items> <Item> <ItemCode /> <UnitPrice /> <Quantity /> </Item> </Items></Order> 数据存储在E 我正在使用Groovy MarkupBuilder生成 XML.

所需的XML是这种形式(简化):

<Order>  <StoreID />  <City />  <Items>    <Item>      <ItemCode />      <UnitPrice />      <Quantity />    </Item>  </Items></Order>

数据存储在Excel文件中,易于访问.我的Groovy脚本解析Excel并生成XML.

例如

import groovy.xml.*def writer = new StringWriter()def xml = new MarkupBuilder(writer)xml.Order{  StoreID("Store1")  City("New York")  Items(){    Item(){      ItemCode("LED_TV")      UnitPrice("800.00")      Quantity("2")    }  }}

“项目”内可以有多个“项目”容器.

我的问题是:
假设我们要生成具有10个项目的Order XML.有没有办法在“items”容器中写一个像for循环的内容?这样,我们不需要为10个不同的项目编写MarkupBuilder代码.

有一个类似的问题Adding dynamic elements and attributes to groovy MarkupBuilder or StreamingMarkupBuilder.但它不讨论循环.

解决方法 是的,有一种使用循环的方法.在这里扩展你的例子:

import groovy.xml.*def writer = new StringWriter()def xml = new MarkupBuilder(writer)//List of items represented as a mapdef items = [[itemCode: "A",unitPrice: 10,quantity: 2],[itemCode: "B",unitPrice: 20,quantity: 3],[itemCode: "C",unitPrice: 30,quantity: 4],[itemCode: "D",unitPrice: 40,quantity: 6],[itemCode: "E",unitPrice: 50,quantity: 5]]xml.Order{  StoreID("Store1")  City("New York")  Items{    //Loop through the List.    //make sure you are using a variable name instead of using "it"    items.each{item->      Item{        ItemCode(item.itemCode)        UnitPrice(item.unitPrice)        Quantity(item.quantity)      }    }  }}println writer

应该给你你期待的东西

总结

以上是内存溢出为你收集整理的在Groovy中使用XML MarkupBuilder动态添加多个XML元素/容器全部内容,希望文章能够帮你解决在Groovy中使用XML MarkupBuilder动态添加多个XML元素/容器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234910.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存