`

java调用groovy脚本生成xml

 
阅读更多

首先我要说的是...

这个只是个简单的演示而已..用GSE调用groovy脚本时间也够呛

这个解析很简单 但调用返回这个过程代价却很高 总共时间有400多毫秒(而我单独写个脚本来运行这个是连10ms页不需要的) 这是无法接受的

借用一句话吧  这种要实用还必须是"小消息,大计算"的情况下...

 

好了不废话了

 

jdk版本是7u40

groovy版本是2.1.7

 

为了简单处理 目录结构如下:


 

使用到的是h2.groovy

 

h2中的代码如下:

def writer=new StringWriter()
def xml = new groovy.xml.MarkupBuilder(writer)


 
xml.person(name:person.name){
 age person.age
 for(def f : person.favor){
    "favor" f
  }
}
writer.toString()

 

Person类:

import java.util.List;


public class Person {
	private String name;
	private int age;
	private List<String> favor;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public List<String> getFavor() {
		return favor;
	}
	public void setFavor(List<String> favor) {
		this.favor = favor;
	}
	
}

 

Main类:


 

import groovy.lang.Binding;
import groovy.util.GroovyScriptEngine;
import groovy.util.ResourceException;
import groovy.util.ScriptException;

import java.io.IOException;
import java.util.ArrayList;

public class Main {
	public static void main(String[] args) throws IOException,
			ResourceException, ScriptException {
		

		GroovyScriptEngine gse = new GroovyScriptEngine(Main.class
				.getClassLoader().getResource("").getPath().substring(1));
		Binding binding = new Binding();

		Person p = new Person();
		p.setName("cc");
		p.setAge(21);

		ArrayList<String> list = new ArrayList<>();
		list.add("上网");
		list.add("玩游戏");
		list.add("coding");
		p.setFavor(list);
		binding.setVariable("person", p);
		long begin=System.currentTimeMillis();
		Object result = gse.run("h2.groovy", binding);
		long end=System.currentTimeMillis();
		System.out.println(result);
		System.out.println("耗时:"+(end-begin));

	}
}

 

最后的输出:

<person name='cc'>
  <age>21</age>
  <favor>上网</favor>
  <favor>玩游戏</favor>
  <favor>coding</favor>
</person>
耗时:438

 

 

 

 

--------------------分割线--------------------------

以上groovy代码中有个疑问

for(def f : person.favor){
    "favor" f
  }

 这一段中 如果写成 

"f" f 就会报错 这个在groovyConsole中也是一样的 也就是 ""内的必须不是和参数一样的名字 例如参数变成i 那么 "i" i是不允许的

此外写成 f f 也会错 要实现f f的效果 要写成 "${f}" f 这样才行

 

红字的补救方法也有:

tmp="i"
print(["上网", "玩游戏", "coding"])
xml.info(id:a){
  for(def i : ["上网", "玩游戏", "coding"]){
     "${tmp}" i
  }
}

红字的错误感觉怪怪的...

错误信息如下:

groovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (java.lang.String) values: [上网]
Possible solutions: wait(), any(), wait(long), split(java.lang.String), each(groovy.lang.Closure), count(java.lang.String)

 

有谁知道为什么吗? 麻烦解答一下^_^

 

  • 大小: 11.5 KB
0
2
分享到:
评论

相关推荐

    Groovy 动态修改XML

    这篇名为“Groovy动态修改XML”的博文可能详细介绍了如何使用Groovy对XML文档进行动态修改。通常,这个过程包括以下步骤: 1. **解析XML**:首先,使用XMLSlurper或XMLParser将XML字符串或文件转换为Groovy的DOM...

    Groovy和Xquery脚本JSON和XML解析工具

    脚本解析工具,可使用Groovy或Xquery解析JSON报文或XML报文

    SpringBoot-Gradle-Maven-Java-Groovy

    SpringBoot、Gradle、Maven、Java和Groovy是Java生态...- 在测试和配置管理中使用Groovy,如Spock测试框架和Grails配置。 理解并熟练掌握这些技术,有助于提升Java开发者的专业技能,更好地适应现代企业级开发的需求。

    java应用简单嵌入脚本模块

    这里我们将深入探讨如何使用Groovy脚本语言作为嵌入式脚本模块,以及它在Java开发中的应用。 Groovy是一种基于Java平台的、面向对象的脚本语言,它具有简洁的语法,易于学习,同时又充分利用了Java的生态系统。由于...

    groovy-xml-2.2.0-beta-1.zip

    Groovy 是一种强大的、动态的、基于Java平台的脚本语言,它被广泛用于简化Java开发,尤其是在构建脚本、自动化任务以及XML处理等方面。"groovy-xml-2.2.0-beta-1.zip" 文件是Groovy的一个版本,专注于XML处理功能,...

    ROS 脚本生成器 4.62

    通过使用ROS脚本生成器4.62,开发者能够更专注于算法和逻辑设计,而不是花费大量时间在配置细节上。这不仅提高了开发效率,也使得团队协作变得更加流畅。同时,随着ROS生态的不断壮大,这类工具的持续更新和优化对于...

    Groovy调用Weka生成决策树

    本篇文章将重点讲解如何使用Groovy调用Weka来生成决策树。 在Groovy中调用Weka,首先需要确保你的环境中已经安装了Weka库。这通常通过Maven或Gradle等构建工具添加依赖来实现。对于Maven,可以在pom.xml文件中添加...

    第 1 部分: 引入 Java 脚本 API

    - `pom.xml`:这是Maven项目的配置文件,可能会定义依赖项,如脚本引擎库,并配置构建过程以使用Java脚本API。 - `src`:这是源代码目录,可能包含使用Java脚本API的Java类或脚本文件。 - `lib`:这是库文件夹,通常...

    job-dsl-playground, 使用Jenkins工作DSL调试Groovy脚本的应用程序.zip

    job-dsl-playground, 使用Jenkins工作DSL调试Groovy脚本的应用程序 Jenkins工作DSL游乐场http://job-dsl.herokuapp.com/使用 Jenkins工作DSL插件调试Groovy脚本的应用程序。 允许用户使用DSL创建作业并查看生成的XML...

    maven配置java项目使用groovy做源码.zip

    在“maven配置java项目使用groovy做源码.zip”中,我们可能会看到`pom.xml`文件包含了特定的配置,使得Maven能够识别并处理Groovy源码。 Groovy是一种动态类型的、面向对象的脚本语言,它可以无缝地与Java代码集成...

    groovy+maven+spring

    这通常涉及到Spring的ScriptFactory和ScriptTemplate接口,或者使用GroovyShell或GroovyScriptEngine来解析和执行Groovy脚本。 为了实现远程加载,我们可以利用HTTP或者FTP服务来获取Groovy脚本文件,然后在Spring...

    MyVo Generate POJOs.groovy.zip

    Groovy脚本可以通过读取数据库表结构,或者解析JSON、XML等数据格式,获取到字段信息,然后根据这些信息动态生成Java类。通常,一个POJO类会包含属性(fields)、getter和setter方法,以及可能的构造函数。Groovy的...

    groovy-all

    Groovy是一种动态、开源的编程语言,它是Java平台上的一个重要的补充。Groovy结合了Python、Ruby和...在Java项目中引入这个库,你可以轻松地集成Groovy脚本,提升开发效率,同时得益于其动态特性和强大的库支持。

    spring-beans-groovy源码

    例如,我们可以在启动时根据环境变量或配置文件动态生成Groovy脚本,然后通过`GroovyBeanDefinitionReader`加载这些动态定义。 此外,Groovy的动态类型特性使得我们可以避免在Bean定义中指定类型,Spring会自动推断...

    groovy

    4. 测试:Spock测试框架使用Groovy编写,提供了富有表达力的测试语句,简化了测试代码的编写。 5. 容器管理:在Apache Kafka、Cassandra等大数据处理系统中,Groovy用于配置和管理容器。 四、Groovy与Java的交互 ...

    apache-groovy-sdk-3.0.6.zip

    4. **Groovy Ant任务**:Groovy SDK包含了一些Ant任务,允许你在Ant构建脚本中直接使用Groovy,比如运行Groovy脚本、编译Groovy源代码等。 5. **Groovy类库**:Groovy标准库提供了一系列的类和模块,涵盖了集合操作...

    groovy http请求

    Groovy是一种基于Java平台的、动态的、面向对象的编程语言,它被广泛用于脚本编写、自动化任务、测试等领域。在Groovy中发送HTTP请求是开发者经常需要进行的操作,尤其是在进行API测试或者集成第三方服务时。下面...

    Groovy学习笔记

    - **Groovyc**: 编译Groovy脚本到Java字节码。 - **Groovysh**: 命令行界面,支持即时执行Groovy命令。 - **GroovyConsole**: GUI控制台,提供简单的编辑功能。 #### 六、基本语法 - **语句结尾**:尽管Groovy允许...

Global site tag (gtag.js) - Google Analytics