我现在grails+groovy,用Groovy 生成 Flex tree 功能树需要的XML文件,里面用到了递归,可以无限级。下现有二个类:一个是对象TabFunction,这就是我的功能表影射出的对象,Test3是生成XML的测试类。(附件中有:groovy语方法文档。)
package ce.bean
class TabFunction {
String cCode;
String cName;
String cDescription;
String cParentCode;
Date dCreate=new Date();
String cState;
String cGrade
static mapping ={
version false;
}
static constraints = {
}
}
package com
import groovy.xml.StreamingMarkupBuilder
import ce.bean.TabFunction
/**
* Created by IntelliJ IDEA.
* User: mxl
* Date: 2010-3-16
* Time: 15:58:22
* To change this template use File | Settings | File Templates.
*/
class Test3 {
def str="<funlist></funlist>";
def void roolMothed(){
def obj= new TabFunction(cCode:"TOP_SysUserManager",cName:"基础信息维护",cDescription:"系统注册信息管理",cState:"0",cGrade:1,cParentCode:"00");
obj.id=2;
def obj1= new TabFunction(cCode:"SYS_UserManager",cName:"用户信息管理",cDescription:"系统注册用户管理",cState:"0",cGrade:2,cParentCode:"TOP_SysUserManager");
obj1.id=1;
def obj2= new TabFunction(cCode:"TOP_SystemManager",cName:"系统信息维护",cDescription:"系统注册信息管理",cState:"0",cGrade:1,cParentCode:"00");
obj2.id=3;
def obj3= new TabFunction(cCode:"fff",cName:"系统信息维护",cDescription:"系统注册信息管理",cState:"0",cGrade:3,cParentCode:"SYS_UserManager");
obj3.id=5;
List list=new ArrayList();
list<<obj1<<obj<<obj2<<obj3;
println "LAST:::"+ testMethod(list,list,"00",str)
}
def String testMethod(all,list,parentCode,str){
def temp = all.findAll {it.@cParentCode==parentCode};
def root = new XmlSlurper().parseText(str) ;
def outputBuilder = new StreamingMarkupBuilder()
def tempList=new ArrayList();
String result="";
if(parentCode.length()>0){
temp.each {
def tempFun=it;
//def obj=root.sysfun.find {it.@cCode == parentCode };
root.appendNode{
sysfun(cCode:tempFun.cCode,cName:tempFun.cName);
}
def ll= all.findAll {it.@cParentCode==tempFun.cCode}
if (ll.size()>0) ll.each{ tempList<<it};
}
}else{
list.each {
def tempFun=it;
// println tempFun.cParentCode+":::::"+tempFun.cCode;
def obj=root.'**'.find{it.@cCode==tempFun.cParentCode};
obj.appendNode{
sysfun(cCode:tempFun.cCode,cName:tempFun.cName);
}
def ll= all.findAll {it.@cParentCode==tempFun.cCode}
if (ll.size()>0) ll.each{ tempList<<it};
}
}
result = outputBuilder.bind{ mkp.yield root }
if(tempList.size()>0)
testMethod(all,tempList,"",result);
else{
return result;
}
}
public static void main(def a){
new Test3().roolMothed();
}
}
分享到:
相关推荐
Groovy的XML支持是其一大亮点,它提供了一种简洁的语法来操作XML,使得XML处理变得像操作普通的Groovy集合一样简单。例如,通过Groovy的GPath表达式,开发者可以直接使用类似CSS选择器的方式来获取XML节点。此外,...
本主题聚焦于四种不同的Java库——XStream、Dom4j、Groovy以及JDOM,它们都是用来解析和操作XML文档的工具。 1. **XStream**: XStream是一个Java库,它提供了将Java对象序列化为XML,以及从XML反序列化回Java对象...
3. 数据处理:Groovy可以方便地处理XML、JSON等数据格式,常用于数据转换和解析。 4. 测试:Spock测试框架使用Groovy编写,提供了富有表达力的测试语句,简化了测试代码的编写。 5. 容器管理:在Apache Kafka、...
在实际项目中,`spring-beans-groovy`还支持在运行时动态修改Bean定义,这在处理复杂或不确定的配置时非常有用。例如,我们可以在启动时根据环境变量或配置文件动态生成Groovy脚本,然后通过`...
5. **元编程(Metaprogramming)**:Groovy支持元编程,即在运行时修改或扩展类的行为,这为代码的动态扩展提供了可能。 **开发环境搭建:** 要开始使用Groovy,首先确保安装了JDK 1.5或更高版本,并配置好环境...
- **XML处理**:Groovy内置了强大的XML处理功能,支持XPath查询、DOM操作等。 - **单元测试**:Groovy支持多种单元测试框架,如JUnit、Spock等,提供了更简洁的测试语法。 #### 四、结语 《Groovy in Action》这...
5. **Groovy类库**:Groovy标准库提供了一系列的类和模块,涵盖了集合操作、元编程、XML处理、网络I/O等多个领域,这些类库极大地丰富了Groovy的内置功能。 6. **Gradle集成**:由于Groovy是Gradle的默认脚本语言,...
Groovy对XML的支持非常强大,不仅提供了内置的解析和生成能力,还有一系列的API和工具,使得XML处理变得简单而高效。 ### 深入Groovy的日常应用 #### 小贴士和技巧 这一部分提供了许多实用的Groovy编程小贴士和...
4. GPath语法:Groovy对XML和类似结构的查询提供了强大的语法支持,使得开发者可以非常方便地查询和操作XML文档和复杂的对象图。 5. 运行时和编译时特性:Groovy在运行时提供了大量的便捷特性,如隐式和显式的类型...
Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作,而无需直接编写SQL语句。 在Java项目中,通常需要以下几部分的Hibernate配置: 1. **hibernate.cfg.xml**:这是主...
- Gradle的Groovy DSL(领域特定语言)比Ant或Maven的XML配置更易读、易写。 6. **Spock测试框架** - Groovy还催生了Spock测试框架,它提供了一种声明式的测试语法,使测试代码更具可读性和维护性。 7. **Groovy...
- **内置DSLs**:Groovy内建了用于构建XML和SQL的DSL,使得处理这些任务更直观。 - **自定义DSL**:Groovy的简洁语法和元编程能力使得构建自己的DSL变得容易,常用于配置和构建工具,如Gradle。 6. **集合操作**...
4. **Groovy库**:SDK包含了完整的Groovy标准库,这些库提供了许多内置函数和类,覆盖了I/O、网络、XML处理、日期时间等多方面功能,极大地丰富了Groovy的生态系统。 5. **Ant任务**:对于使用Apache Ant构建系统的...
此外,Groovy还提供了强大的操作集合、字符串和文件的能力,其内置的GString和AntBuilder等工具使得日常任务处理变得轻松。书中还涵盖了Groovy对XML和JSON的支持,使得数据交换和解析更加便捷。 压缩包中的"API...
9. **构建工具**:Groovy常被用于构建工具如Gradle,它允许使用Groovy脚本替代传统的XML配置,提高了构建脚本的可读性和可维护性。 1. **Spock**:Groovy还有一款强大的测试框架Spock,其基于行为驱动开发(BDD)...
在实际操作中,我们需要在POM.xml文件中配置maven-resources-plugin,指定远程脚本的URL,并在Spring配置文件中定义Bean,指定脚本来源。这样,每次启动或更新脚本时,Spring都会自动加载并执行远程Groovy脚本,实现...
4. **元编程**:Groovy允许在运行时修改类和对象的行为,这是通过元对象协议(Meta Object Protocol, MOP)实现的。元编程为动态扩展和定制对象提供了可能。 5. **GString**:Groovy的GString可以方便地进行字符串...