我是蚂蚁剧本的新手。我正在寻找如何将两个或多个xml文件合并到ant脚本中的单个xml文件中。是否有可能通过蚂蚁实现这一目标。 在我的项目中,将在文件夹中动态生成多个xml文件,例如:server1.xml,manager.xml,server2.xml,server3.xml。我需要将其文件名中包含服务器的所有xml文件(server1.xml,server2.xml,server3.xml)合并到一个xml中,例如:server.xml。需要将其部署在jboss中。 我发现将内容从一个xml文件复制到另一个文件,如下所示。
target name="servlet"> <xmltask
source="src/web.xml"
dest="target/web.xml"> <!--
nothing to do here yet -->
<\xmltask> </target>.
答案 0 :(得分:1)
如果你使用xmltask(http://www.oopsconsultancy.com/software/xmltask/),并且让我们说你有src1,src2和dest作为文件。 您可以先使用缓冲区中的insert或paste从src1复制到src2,然后以相同的方式从src2复制到dest。
查看xmltask的插入:http://www.oopsconsultancy.com/software/xmltask/#usage.insert
尚未对其进行测试,但以下内容应该是您想要的:
<target name="mergeServerFiles">
<xmltask clearBuffers="b">
<fileset dir="${myDir}">
<includes name="server*.xml"/>
</fileset>
<copy path="//sectionYouWantToCopy" buffer="b" append="true"/>
</xmltask>
<xmltask sourcebuffer="b" dest="server.xml" />
....
</target>
答案 1 :(得分:1)
由于Daniele提出的解决方案返回的错误“无法使用多个缓冲区节点作为输入源”。 我做了我的:
<for param="file">
<path>
<fileset dir="directory" includes="server-*.xml" />
</path>
<sequential>
<local name="name"/>
<basename file="@{file}" property="name" />
<echo message="${name}"/>
<xmltask source="@{file}" clearbuffers="c">
<copy path="/rootTag/*" buffer="c" append="true" />
</xmltask>
<xmltask sourcebuffer="all" destbuffer="all">
<paste path="/rootTag" buffer="c"/>
</xmltask>
</sequential>
</for>
<xmltask sourcebuffer="all" dest="server.xml" />