`

Groovy 动态修改XML

阅读更多
我现在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-wordpress-rpc-lib:一个与WordPress XML-RPC API交互的Groovy实用程序

    Groovy实用程序,可与WordPress XML-RPC API进行交互。 它涵盖了描述的所有服务。 请参阅测试包以作为用法参考。 去做 该库主要是用于将旧站点迁移到Wordpress的,因此某些API尚未经过很好的测试,但仍在进行中。 ...

    用于存放java源码和Thinking of Java的资源.rar

    这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用。 Apache Ant:基于XML的构建...Gradle:使用Groovy(非XML)进行增量构建,可以很好地与Maven依赖管理配合工作。 字节码操作 编程方式操作字节码的开发库。

    java开源包7

    容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展...

    schema-gen:XML模式代码生成器输出Swift,Kotlin和Java

    模式生成schema-gen是一种多语言,可互操作的XML Schema代码生成器。 生成的代码允许以两种最广泛使用的行业格式(XML和JSON)读取,写入,操作和传输数据。 当前支持的语言是Java 8,Kotlin 1,Swift 4和Dart 2.1。...

    Grails 技术精解与Web开发实践【源码+样章】----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    18.2.3 修改web.xml 224 18.2.4 添加动态方法 226 18.2.5 捕获变更 227 18.3 插件的依赖关系 229 18.4 在安装或升级时执行附加操作 230 18.5 本章小结 230 第19章 浅析Grails的源程序 231 19.1 准备工作 231 19.1.1...

    xmljava系统源码-java-trader:Java期货交易者CTPFEMASXTP

    xml java系统源码 Java Trader交易框架文档 简介 java-trader项目目标是成为一个基于Java的开源期货交易框架, 有这些特点: 分布式管理界面, 支持交易服务的集中管理 基于纯Java的行情和交易接口, 内建支持JCTP, 支持...

    awaitility源码 java测试工具,用来同步异步操作的DSL

    该工具支持Java、Scala和Groovy三种语言,并且可以用于测试环境,需要在maven的pom.xml文件中添加对应的依赖。 在实际使用中,Awaitility提供了非常灵活的等待条件设置。例如,你可以通过调用`await().until...

    JMeter5.4.1性能测试工具

    Apache JMeter 可用于测试静态和动态资源、Web 动态应用程序的性能。 它可用于模拟服务器、...函数可用于为测试提供动态输入或提供数据操作。 通过适用于 Maven、Gradle 和 Jenkins 的第3方开源库轻松实现持续集成。

    Apache JMeter (apache-jmeter-5.4.3.zip)

    Apache JMeter (apache-jmeter-5.4.3.zip)可用于测试静态和动态资源、Web 动态应用程序的...函数可用于为测试提供动态输入或提供数据操作。 通过适用于 Maven、Gradle 和 Jenkins 的第3方开源库轻松实现持续集成。

    Apache JMeter (apache-jmeter-5.4.3.tgz)

    Apache JMeter (apache-jmeter-5.4.3.tgz)可用于测试静态和动态资源、Web 动态应用程序的...函数可用于为测试提供动态输入或提供数据操作。 通过适用于 Maven、Gradle 和 Jenkins 的第3方开源库轻松实现持续集成。

    Apache JMeter 源码(apache-jmeter-5.4.3_src.zip)

    Apache JMeter 源码(apache-jmeter-5.4.3_src.zip)可用于测试静态和动态资源、Web 动态应用...函数可用于为测试提供动态输入或提供数据操作。 通过适用于 Maven、Gradle 和 Jenkins 的第3方开源库轻松实现持续集成。

    Apache JMeter 源码(apache-jmeter-5.4.3_src.tgz)

    Apache JMeter 源码(apache-jmeter-5.4.3_src.tgz)可用于测试静态和动态资源、Web 动态应用...函数可用于为测试提供动态输入或提供数据操作。 通过适用于 Maven、Gradle 和 Jenkins 的第3方开源库轻松实现持续集成。

    compositor(UI编辑开发) v0.4 最新版

    compositor是一款非常方便的编程软件,不仅具有便捷的操作方式更有丰富的功能以及全新的编程模式选择带来...你描述你的UI,然后写一个应用程序来处理UI输入,描述符是XML,应用程序是一个Java/Groovy/Scala/Kotlin类

    Maven权威指南 很精典的学习教程,比ANT更好用

    Maven权威指南 Authors Tim O'Brien (Sonatype, Inc.) , John Casey (Sonatype, Inc.) , Brian Fox (Sonatype, Inc.) , Bruce Snyder () , Jason Van Zyl (Sonatype, Inc.) , Juven Xu () Abstract ...

    grails-drools

    不使用。 该插件仍在开发中。...豆子您可以使用配置文件grails-app/conf/DroolsConfig.groovy或 xml 文件grails-app/conf/drools-context.xml来定义 bean。 这将允许您执行以下操作: class SomeService { def pack

    clarityclient:Java客户端,用于与Genologics的REST API配合使用

    英国剑桥大学癌症研究所(CRUK-CI)的Genologics Java客户端为Java或Groovy开发人员提供了一种使用对象而不是XML或DOM文档树来使用方法。 它提供了一个接口来执行(几乎)Genologics REST API支持的所有操作,包括...

    xmljava系统源码-gradle_user_guide:Gradle用户指南

    基于Groovy的领域特定语言(DSL),用于描述和操作构建过程 支持maven/lvy的依赖管理 非常灵活,并不强迫用户一定要使用最佳的构建方式 插件可以暴露自身的语言和接口api给构建文件使用 支持IDE集成 2.2 需求...

    java开发常用jar包

    jasperreports-3.5.3-applet.jar jasperreports-3.5.3-javaflow.jar groovy-all-1.5.5.jar JasperReport报表 fckeditor-java-core-2.6.jar imageinfo-1.9.jar serializer.jar fckeditor在进行文字编辑时,使用的仍...

    Sublime Text编辑器

    SublimeText2支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等...

Global site tag (gtag.js) - Google Analytics