gpt4 book ai didi

java - 获取 Ant 元素中保存的值

转载 作者:行者123 更新时间:2023-12-01 11:11:47 27 4
gpt4 key购买 nike

假设我有一个像这样的宏定义

<macrodef name="Test">
<element name="someName"/>
<sequential>
<java classname="path_to_Test">
<classpath> blah </classpath>
<arg value="someText and {valueOfsomeName}"/>
</java>
</sequential>
</macrodef>

然后,我有一个使用这个宏定义的目标,例如

<target name="testMacrodef">
<Test>
<someName value="someValue"/>
</Test>
</target>

我的问题是,如何使 {valueOfsomeName} 准确地成为字符串 someValue?我似乎根本无法让它工作。

另外,只是为了一点上下文,我不能只使用属性标签而不是元素标签,因为我需要它作为一个可选参数。

我在 Google 上搜索了很长时间,试图找到解决方案;也许没有。但据我所知,没有人问过这个问题,而且 Ant 文档中似乎也没有很好地介绍这一点,所以如果不可能,是否有一种方法可以提供可选属性?

编辑:拼写

最佳答案

使用简单的echo如果元素只有文本内容,例如:

<macrodef name="Test">
<element name="someName" optional="yes"/>
<attribute name="foo" default="bar"/>
<sequential>
<echo>
<someName/>
</echo>
<echo> @@{foo} => @{foo}</echo>
</sequential>
</macrodef>

<Test>
<someName>blablabla..</someName>
</Test>

输出:

[echo]     
[echo] blablabla..
[echo] @{foo} => bar

否则对于嵌套 xml 内容,请使用 echoxml ,f.e. :

<macrodef name="Test">
<element name="someName" optional="yes"/>
<attribute name="foo" default="bar"/>
<sequential>
<echoxml>
<someName/>
</echoxml>
<echo> @@{foo} => @{foo}</echo>
</sequential>
</macrodef>

<Test>
<someName>
<echo>blablabla..</echo>
</someName>
</Test>

输出:

<?xml version="1.0" encoding="UTF-8"?>
<echo>blablabla..</echo>
[echo] @{foo} => bar

如果您需要元素值进行进一步处理,请使用 echo/echoxml 进行归档和 loadfile之后。
--评论后编辑--
回显到文件:

<macrodef name="Test">
<element name="someName" optional="yes"/>
<attribute name="foo" default="bar"/>
<sequential>
<echo file="somefile.txt">
<someName/>
</echo>
<echo> @@{foo} => @{foo}</echo>
</sequential>

<macrodef name="Test">
<element name="someName" optional="yes"/>
<attribute name="foo" default="bar"/>
<sequential>
<echoxml file="somefile.txt">
<someName/>
</echoxml>
<echo> @@{foo} => @{foo}</echo>
</sequential>

然后使用加载文件 => 创建带有内容的属性(=字符串)。
当使用带有过滤器链的 echoxml strip xml header 时:

<loadfile srcfile=" ... " property="whatever">
<filterchain>
<headfilter lines="10" skip="1"/>
</filterchain>
</loadfile>

根据您的需要调整 headfilterlines 属性的值。
任何具有值(value)的属性(property):

<echo>blablabla..</echo>

关于java - 获取 Ant 元素中保存的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32269560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com