在前一篇
Unmi 学习 Groovy 之 GroovyMarkup (一) 引入了 GroovyMarkup 及介绍了其中的一个 Builder(MarkupBuilder) 的用法。本篇继续。
groovy.util.NodeBuilder,用来创建一般任意对象的树状结构。看到了,它不在 groovy.xml 包之下,但它是一个 Builder,所以秉承了 Builder 的语法规则,而且还可用路径(对象导航)的方式来访问这个 Builder 实例中的节点或属性值。还是来看例子:
看看上面程序的输出:
users[attributes={balance=100}; value=[user[attributes={gender=male}; value=Unmi], user[attributes={}; value=[Joe, order[attributes={item=Book}; value=[]]]]]]
再来看看如何访问 root 的属性、节点、以及节点属性值,像访问 DOM 一样,并且更灵活:
上面代码的输出如下,对照输出可很好的理解:
users[attributes={balance=100}; value=[user[attributes={gender=male}; value=Unmi], user[attributes={}; value=[Joe, order[attributes={item=Book}; value=[]]]]]]
-----访问节点-----
user:Unmi
user:["Joe", order[attributes={item=Book}; value=[]]]
-----访问属性-----
100
100
-----深度优先遍历节点-----
users:["balance":100]
user:["gender":"male"]
user:[:]
order:["item":"Book"]
-----广度优先遍历节点-----
users:[user[attributes={gender=male}; value=Unmi], user[attributes={}; value=[Joe, order[attributes={item=Book}; value=[]]]]]
user:Unmi
user:["Joe", order[attributes={item=Book}; value=[]]]
order:[]
用 Java 迭代器来遍历一个节点的子节点
user[attributes={gender=male}; value=Unmi]
user[attributes={}; value=[Joe, order[attributes={item=Book}; value=[]]]]
参考:1. 《Java 脚本编程 语言、框架与模式》 第五章,高级的 Groovy 编程
[版权声明]本站内文章,如未特别注明,均系原创或翻译之作,本人 Unmi 保留一切权利。本站原创及译作未经本人许可,不得用于商业用途及传统媒体。网络媒体可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。及此说明,重之之重。