我将文件夹中的所有xml文件连接到ant脚本中的单个xml文件中。连接xml文件时,标题
<?xml version="1.0" encoding="UTF-8" ?>
所有xml文件中的都会附加在输出xmlfile中。
有没有办法避免这个标题?
<concat destfile="${docbook.dir}/all-sections.xml"
force="no">
<fileset dir="${docbook.dir}"
includes="sections/*.xml"/>
</concat>
答案 0 :(得分:1)
您可以应用正则表达式来丢弃标题:
<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>
https://ant.apache.org/manual/Types/filterchain.html
编辑:如果你想保留第一次出现的标题,那么这是一个选项:
<property name="first" value="true"/>
<concat destfile="${docbook.dir}/all-sections.xml">
<fileset dir="${docbook.dir}" includes="sections/*.xml"/>
<filterchain>
<scriptfilter language="javascript">
<![CDATA[
first = project.getProperty("first");
if(self.getToken().indexOf("<\?xml version") != -1) {
if(first == "true") {
project.setProperty("first", "false");
} else {
self.setToken(null);
}
}
]]>
</scriptfilter>
</filterchain>
</concat>
答案 1 :(得分:0)
有一个过滤器链。所以你可以使用'xml version'或'encoding'来过滤。
<filterchain>
<linecontains>
<contains value="xml version"/>
</linecontains>
</filterchain>
然后有一个Header可以添加为common.There你可以给出公共标题。
<header filtering="no" trimleading="yes">
----Put Header---
</header>