java - 如何从 XML 属性文件加载变量?

标签 java xml ant ant-contrib

我目前正在 Ant 中从一个 XML 文件加载属性。但是,我想在 for 循环中执行当前的 ant 任务,同时每次为同一组属性加载新的 XML 属性文件。

我知道 ant-contrib 的 var 任务的存在,它允许我覆盖属性。但是,我不确定如何将它与从 XML 文件加载属性结合起来。一开始我想遍历所有属性,然后使用 propertyregex 任务将它们设置为新值。不幸的是,当我开始编写代码来执行此操作时,我意识到我仍然不知道如何实际加载属性值,因为它们无法覆盖以前设置的属性。 (好吧,他们可以使用 var 任务,但据我所知,这不能用于从 XML 文件加载。)

有什么想法吗?我理想中寻找的是一个类似于

<xmlvars file="myxmlpropertyfile.xml"/>

它的功能就像

<xmlproperty file="myxmlpropertyfile.xml"/>

除了它会覆盖变量。

最佳答案

您可以使用 <xmlproperty> 做的事情之一任务是为每个属性添加一个特定值作为前缀。为什么不简单地使用参数名称作为前缀?

否则,您可以使用 <echoproperties>取消设置所有属性的任务,然后循环遍历 <for> 的下一次迭代任务。

类似这样的东西,但这没有经过测试:

 <for param="my.directory">
     <fileset dir="${some.directory}"/>
     <sequential>
         <xmlproperty file="@{my.directory}/myxmlpropertyfile.xml"
            prefix="foo-fighters"/>
          <blah, blah, blah/>
          <for param="reset.var">
              <echoproperty prefix=foo-fighters"/>
              <sequential>
                  <var name="@{reset.var}"
                     unset="true"/>
              </sequential>
          </for>
     </sequential>
 </for>

基本上,您使用外部 <for>循环遍历您的目录,并使用 <xmlproperty>设置属性名称。 <blah blah blah/>意思是做你想做的事。然后,在你进入下一次迭代之前 <for>循环,你做一个内部 <for>将取消设置您之前在 <xmlproperty> 中设置的所有变量的循环任务。

诀窍是使用变量前缀来保证变量名很容易找到。因此 foo-fighters .

关于java - 如何从 XML 属性文件加载变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416310/

相关文章:

java - 使用 Apache HttpClient 下载文件

jquery - 如何将 XML 元素插入浏览器 DOM

c# - 推荐用于在 C# 中处理 xml 配置文件的类?

android - 使用ant构建android项目

java - Ant GET 任务和代理

ant - 通过ant任务配置Worklight数据库时缺少ant属性

java - Rxjava 2 Maybe.toSingle 错误

java - 为什么箭头会击中玩家?我的世界模组 1.8

java - 使用 'where' 条件将值从一个表复制到另一个表

sql-server - SQL Server 2008/2012 不解析 XML Soap