我要求脚本扫描名称/值对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
很明显,输出不包含任何&#34;,&#34;分隔值,因为ANT通过使用默认的&#34;,&#34;来区分输入值。分离器。
有兴趣知道我们是否可以覆盖&#34;,&#34;在ant中使用分隔符,因此默认情况下它使用类似&#34; |&#34;扫描xml文件中的值?
然后我可以使用:
for list =&#34; $ {consumer.value}&#34; PARAM =&#34;串&#34;定界符=&#34; |&#34;
ANTXtras似乎提供了此功能,但我无法使其正常工作:(
感谢您的帮助。
谢谢, 和Sandeep
答案 0 :(得分:2)
@aa W
是的,我们可以使用delimiter =&#34; |&#34;在for循环中 - 但仅当列表本身用&#34; |&#34;分离器。
这里的问题是当你使用
时<xmlproperty file="Test.xml" collapseAttributes="true"/>
ANT默认扫描文件并使用&#34;&#34;保存列表。分隔符,我想覆盖此默认行为。
事实上,当我打字时,我只有一个尤里卡时刻(感谢马克!)并尝试使用<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
答案 1 :(得分:1)
Per:http://ant-contrib.sourceforge.net/tasks/tasks/for.html,对于ant-contrib任务,使用逗号作为默认分隔符。您可以覆盖到所需的值:
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="|">