Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要更新的ANT脚本<;价值></价值>;使用属性文件在xml文件中标记_Ant_Xmltask - Fatal编程技术网

要更新的ANT脚本<;价值></价值>;使用属性文件在xml文件中标记

要更新的ANT脚本<;价值></价值>;使用属性文件在xml文件中标记,ant,xmltask,Ant,Xmltask,请在这里帮助我用ant脚本来执行下面提到的任务,因为我被它卡住了,无法完成 我有如下属性文件: AccessSession/OperatorCode=生产 AccessSession/密码=%587931# 等等 XML内容如下:(简称XML内容) 访问会话/运算符代码 TM制作 访问会话/密码 %T3lkom9525# 等等 我希望脚本使用属性文件中给定的实际属性值更新XML文件中的值标记 <application xmlns="http://www.tibco.com/xmlns/

请在这里帮助我用ant脚本来执行下面提到的任务,因为我被它卡住了,无法完成

我有如下属性文件:

AccessSession/OperatorCode=生产

AccessSession/密码=%587931#

等等

XML内容如下:(简称XML内容)


访问会话/运算符代码
TM制作
访问会话/密码
%T3lkom9525#
等等

我希望脚本使用属性文件中给定的实际属性值更新XML文件中的值标记

<application xmlns="http://www.tibco.com/xmlns/ApplicationManagement" 
name="PurchaseAdhocBundle">
<description></description>
<contact></contact>
<NVPairs name="Global Variables">
    <NameValuePair>
        <name>AccessSession/OperatorCode</name>
        <value>Production</value>
    </NameValuePair>
    <NameValuePair>
        <name>AccessSession/Password</name>
        <value>%587931#</value>
    </NameValuePair>

访问会话/运算符代码
生产
访问会话/密码
%587931#

我建议在ANT copy任务中使用filterset将值替换为模板文件

例子 构建属性 编译文件

src/template.xml 包含可替换令牌的模板

<application xmlns="http://www.tibco.com/xmlns/ApplicationManagement" 
name="PurchaseAdhocBundle">
<description></description>
<contact></contact>
<NVPairs name="Global Variables">
    <NameValuePair>
        <name>AccessSession/OperatorCode</name>
        <value>@OPERATOR_CODE@</value>
    </NameValuePair>
    <NameValuePair>
        <name>AccessSession/Password</name>
        <value>@PASSWORD@</value>
    </NameValuePair>

访问会话/运算符代码
@操作员代码@
访问会话/密码
@密码@
target/output.xml 由ANT构建生成的输出文件

<application xmlns="http://www.tibco.com/xmlns/ApplicationManagement" 
name="PurchaseAdhocBundle">
<description></description>
<contact></contact>
<NVPairs name="Global Variables">
    <NameValuePair>
        <name>AccessSession/OperatorCode</name>
        <value>Production</value>
    </NameValuePair>
    <NameValuePair>
        <name>AccessSession/Password</name>
        <value>%587931#</value>
    </NameValuePair>

访问会话/运算符代码
生产
访问会话/密码
%587931#

Hi Mark..XML文件非常大,将有20-30多个名称/值对。对于所有应用程序,此计数实际上是动态的。因此,将手动干预创建template.XML文件,并手动编辑所有具有可替换令牌的值对。任何方法我们都可以自动放置可复制令牌,因为正如我所说的值对基于应用程序是动态的。@Shrijeethinha,这很好地回答了最初的问题。现在你问的新问题与原来的完全不同。您考虑接受答案并添加新的问题来处理动态特性。@ ShrijeetSinha,如果您需要更强大的功能(例如,解决模板内的AdHoc属性的能力),那么为什么不考虑像FreeMarker这样的合适的模板引擎(还有很多可用的选项)。如果需要编写特定的XML文件,另一种选择是在构建中嵌入groovy之类的脚本语言。在你的情况下,哪种选择是最好的,目前很难确定。
AccessSession/OperatorCode=Production
AccessSession/Password=%587931#
<project name="demo" default="build">

  <property file="build.properties"/>

  <target name="build">
    <copy file="src/template.xml" tofile="target/output.xml">
      <filterset>
        <filter token="OPERATOR_CODE" value="${AccessSession/OperatorCode}"/>
        <filter token="PASSWORD" value="${AccessSession/Password}"/>
      </filterset>
    </copy>
  </target>

</project>
<application xmlns="http://www.tibco.com/xmlns/ApplicationManagement" 
name="PurchaseAdhocBundle">
<description></description>
<contact></contact>
<NVPairs name="Global Variables">
    <NameValuePair>
        <name>AccessSession/OperatorCode</name>
        <value>@OPERATOR_CODE@</value>
    </NameValuePair>
    <NameValuePair>
        <name>AccessSession/Password</name>
        <value>@PASSWORD@</value>
    </NameValuePair>
<application xmlns="http://www.tibco.com/xmlns/ApplicationManagement" 
name="PurchaseAdhocBundle">
<description></description>
<contact></contact>
<NVPairs name="Global Variables">
    <NameValuePair>
        <name>AccessSession/OperatorCode</name>
        <value>Production</value>
    </NameValuePair>
    <NameValuePair>
        <name>AccessSession/Password</name>
        <value>%587931#</value>
    </NameValuePair>