所需的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元素/容器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)