2010-06-17 94 views
5

我對螞蟻相當陌生,一直在看着這些任務。我正在嘗試生成一個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

回答

5

正確的答案取決於你實際上要怎樣做。

你可以創建一個使用echo任務和參替換一個小的XML文檔,但變得難以很快維護。

如果您的目標是生成一個大多數樣板文件,其中包含多個替代值,那麼您應該查看創建模板文檔,然後使用Copy with filtering任務。

如果您需要根據來自Ant的數據(或從其他地方收集)修改文檔的結構,那麼使用xslt任務將會更加合適。 XSLT的問題在於它並不總是直接使用(XSLT使用函數式編程,而不是程序式編程)。

您可能會發現,正確的答案是write your own Ant task會做你想要什麼,只是你想要的方式。

如果你可以更好地描述你想要達到的目標,我相信有人會樂意提供更準確的答案。

+0

謝謝,我與過濾複製,工作非常好! – sarcasteak 2010-06-17 20:13:51

+0

只是一個'邊緣案例'問題 - 「帶過濾器的複製」任務是否能夠正確處理包含特殊XML字符的值(<,&etc?) – monojohnny 2017-02-01 14:40:25

+0

使用過濾器複製是愚蠢的 - 它所做的只是複製字節,並使用值替換。訣竅是您正在定義XML構建文件中的值。如果您可以首先正確定義數值,則使用過濾器進行復制將會替代它們。 – 2017-02-02 13:47:13

1

你可以這樣做,雖然在我看來更像是你想事先編寫腳本的東西,或者你可以從Ant中調出的東西。

的任務是:

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

這當然會是單調乏味的,因爲一切都要逃脫的,但你可以做到這一點。

4

可以使用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> 
相關問題