在Ant脚本中,如何将两个或多个xml文件内容合并到一个xml filr中

时间:2016-02-28 19:34:00

标签: xml xpath ant

我是蚂蚁剧本的新手。我正在寻找如何将两个或多个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>.

2 个答案:

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