我有一个需求,即脚本扫描名称/值对xml并填充值以供将来转换。
下面是一个示例Test.xml
<?xml version="1.0" encoding="UTF-8"?>
<consumer>
<name>Sprint-1</name>
<value>1.0.0, 1.0.1</value>
<name>Sprint-2</name>
<value>1.1.0, 1.1.1</value>
<name>Sprint-3</name>
<value>1.2.0, 1.2.1</value>
</consumer>这是我的蚂蚁脚本:
<xmlproperty file="Test.xml" collapseAttributes="true"/>
<for list="${consumer.name}" param="letter" delimiter=",">
<sequential>
<echo>@{letter}</echo>
</sequential>
</for>
<for list="${consumer.value}" param="string" delimiter=",">
<sequential>
<echo>@{string}</echo>
</sequential>
</for>输出:
[echo] Sprint-1
[echo] Sprint-2
[echo] Sprint-3
[echo] 1.0.0
[echo] 1.0.1
[echo] 1.1.0
[echo] 1.1.1
[echo] 1.2.0
[echo] 1.2.1 很明显,输出不包含任何“、”分隔的值,因为ANT通过用默认值“、”分隔输入值来标记输入值。
我们有兴趣知道我们是否可以覆盖ant中的",“分隔符,这样在默认情况下,它在从xml文件中扫描值时使用类似于”AC.26“之类的内容?
然后我就可以用:
用于list="${consumer.value}“param=”字符串“delimiter=”delimiter=“
ANTXtras似乎提供了这个特性,但我无法让它工作:
感谢你的帮助。
谢谢你,桑迪普
发布于 2014-04-24 14:56:42
@aa W
是的,我们可以在for循环中使用delimiter=“AC.26”--但只有当列表本身被“\”分隔符标记时才能使用。
这里的问题是当您使用
<xmlproperty file="Test.xml" collapseAttributes="true"/> 默认情况下,ANT扫描文件并使用",“分隔符保存列表,我希望覆盖此默认行为。
事实上,当我在打字的时候,我只是有一个尤里卡的时刻(感谢马克!)并尝试使用
<xmlproperty file="Test.xml" collapseAttributes="true" delimiter="|"/>现在,我的脚本按预期工作。
Output:
Test:
[echo] Sprint-1
[echo] Sprint-2
[echo] Sprint-3
[echo] 1.0.0, 1.0.1
[echo] 1.1.0, 1.1.1
[echo] 1.2.0, 1.2.1发布于 2014-04-24 05:29:48
Per:http://ant-contrib.sourceforge.net/tasks/tasks/for.html,为ant-cont肋骨任务使用逗号作为默认的标记符.您可以覆盖到所需的值:
The delimiter characters that separates the values in the "list" attribute.
Each character in the supplied string can act as a delimiter.
This follows the semantics of the StringTokenizer class.需要:
No, defaults to ",".所以你可以换个样子:
<for list="${consumer.value}" param="string" delimiter="|">https://stackoverflow.com/questions/23252175
复制相似问题