我是蚂蚁剧本的新手。我正在寻找如何将文件夹中的所有xml文件连接到ant脚本中的单个xml文件中。
在我的项目中,将在一个文件夹中动态生成许多xml文件,例如:server1.xml,manager.xml,server2.xml,server3.xml。我需要将其文件名中包含服务器的所有xml文件(server1.xml,server2.xml,server3.xml)合并到一个xml中,例如:server.xml。并需要在jboss中部署它。
我发现使用xmltask将内容从一个xml文件复制到另一个文件。 我不知道如何将文件夹中的所有xml文件内容复制到ant脚本中的单个xml文件中。
感谢任何帮助。
答案 0 :(得分:1)
试试这个
连接一系列文件,只有在比所有源文件更旧的情况下才更新目标文件:
示例代码:
<concat destfile="${docbook.dir}/all-sections.xml"
force="no">
<filelist dir="${docbook.dir}/sections"
files="introduction.xml,overview.xml"/>
<fileset dir="${docbook.dir}"
includes="sections/*.xml"
excludes="introduction.xml,overview.xml"/>
</concat>
避免根标记:
<concat destfile="${docbook.dir}/all-sections.xml" force="no">
<fileset dir="${docbook.dir}" includes="sections/*.xml"/>
<filterchain>
<linecontainsregexp negate="true">
<regexp pattern="<\?xml version"/>
</linecontainsregexp>
</filterchain>
</concat>
答案 1 :(得分:1)
好吧,假设使用的XSLT 2.0处理器是Saxon 9,那么你可以按照这样的方式进行。
<xsl:param name="folder-uri" select="'file:/root/users/foo/foldername'"/>
<xsl:param name="select-pattern" select="'server*.xml'"/>
<xsl:variable name="docs" select="collection(concat($folder-uri, '?select=', $selectPattern))"/>
<xsl:template name="main" match="/">
<xsl:element name="{name($docs[1]/*)}" namespace="{namespace-uri($docs[1]/*)}">
<xsl:copy-of select="$docs/*/node()"/>
</xsl:element>
</xsl:template>