ANT覆盖默认的逗号列表分隔符

时间:2014-04-23 18:16:16

标签: xml ant ant-contrib

我要求脚本扫描名称/值对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

2 个答案:

答案 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="|">