我需要使用ant脚本删除xml文件中没有任何值的属性标签
下面是我拥有的XML:
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>DoNothingTest</members>
<name>ApexClass</name>
</types>
<types>
</types>
<types>
</types>
<types>
</types>
<types>
</types>
<version>42.0</version>
</Package>
所有没有嵌套标签或值的标签都应从此xml中删除。输出应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>DoNothingTest</members>
<name>ApexClass</name>
</types>
<version>42.0</version>
</Package>
如何使用ANT脚本实现这一目标?
我正在使用下面的ant脚本执行该工作,但是,它仅会修剪一次'types'标签的出现。
<!--Format the generated XML file -->
<target name="formatXML" depends="generatePackage.xml">
<property name="final-xml.file" value="temp/src/package.xml"/>
<for param="src-xml.absolute-path" list="${final-xml.file}">
<fileset dir="temp/src/" includes="*.xml"/>
<sequential>
<replaceregexp file="${final-xml.file}"
flags="s"
match="\s*(?:<\/([a-z]+)>)(\s*<\1>)"
replace=""/>
</sequential>
</for>
</target>
如何遍历xml文件并替换所有出现的'types'标签?
答案 0 :(得分:0)
您可以使用XSLT ant任务从Ant调用XSLT转换。删除命名空间<types>
中的空http://soap.sforce.com/2006/04/metadata
元素的样式表由样板标识规则组成,该规则复制所有未更改的元素,再加上规则
<xsl:template match="x:types[not(*) and not(text()[normalize-space()])]"
xmlns:x="http://soap.sforce.com/2006/04/metadata"/>