您可以使用Ant来构建/修改XML文件吗?

问题描述:

我对蚂蚁相当陌生,一直在看着这些任务。我正在尝试生成一个xml文件。我是否需要调用一个外部进程或者有没有办法做到这一点?它可以像发送字符串到txt文件并将其保存为.xml一样简单。可能吗?您可以使用Ant来构建/修改XML文件吗?

+1

是不是['Replace'(http://ant.apache.org/manual/Tasks/replace.html)任务足够你想做什么? – tonio 2010-06-17 19:07:00

+0

谢谢,这些答案都非常有用。 – sarcasteak 2010-06-17 19:53:05

正确的答案取决于你实际上要怎样做。

你可以创建一个使用echo任务和参替换一个小的XML文档,但变得难以很快维护。

如果您的目标是生成一个大多数样板文件,其中包含多个替代值,那么您应该查看创建模板文档,然后使用Copy with filtering任务。

如果您需要根据来自Ant的数据(或从其他地方收集)修改文档的结构,那么使用xslt任务将会更加合适。 XSLT的问题在于它并不总是直接使用(XSLT使用函数式编程,而不是程序式编程)。

您可能会发现,正确的答案是write your own Ant task会做你想要什么,只是你想要的方式。

如果你可以更好地描述你想要达到的目标,我相信有人会乐意提供更准确的答案。

+0

谢谢,我与过滤复制,工作非常好! – sarcasteak 2010-06-17 20:13:51

+0

只是一个'边缘案例'问题 - “带过滤器的复制”任务是否能够正确处理包含特殊XML字符的值( monojohnny 2017-02-01 14:40:25

+0

使用过滤器复制是愚蠢的 - 它所做的只是复制字节,并使用值替换。诀窍是您正在定义XML构建文件中的值。如果您可以首先正确定义数值,则使用过滤器进行复制将会替代它们。 – 2017-02-02 13:47:13

你可以这样做,虽然在我看来更像是你想事先编写脚本的东西,或者你可以从Ant中调出的东西。

的任务是:

<echo file="my.xml"><!--put escaped xml here--></echo> 

这当然会是单调乏味的,因为一切都要逃脱的,但你可以做到这一点。

可以使用Replace任务的模板来替换给定的字符串,并将其保存为XML。 一个简单的例子,如图蚂蚁文档中:

<replace file="${src}/index.html" token="@@@" value="wombat"/> 

我用它通过的实际构建标识符在Java项目来代替恒定@[email protected],例如。

如果你想要做更复杂的处理,你应该看看XSLT任务。敌人例如,生成文档,用date替换输出,可以使用类似:

<xslt basedir="doc" destdir="build/doc" 
     extension=".html" style="style/apache.xsl"> 
    <param name="date" expression="07-01-2000"/> 
</xslt> 

当你必须在你的蚂蚁工作流程中处理任何类型的XML处理中,xmltask强烈推荐。非常详细的文档和良好的支持。除此之外,您需要的只是一些XPATH knowledge。这里=>another helpful article