2008-10-23 66 views
4

我有一個xml文件,我需要用Ant來註釋整個文本。用Ant替換多行文本

有此Ant任務

<replace file="${src.dir}/Version.as" 
     token="@revisionPrana" value="${revision}"/> 

,我用它來代替的話,但對我來說,我需要更換整塊這樣的:

<value> 
    <object class="edumatic.backoffice.view.modules.NavigationModuleInfo"> 
    <property name="url" 
    value="edumatic/backoffice/view/modules/support/ExamsNavigationModule.swf"/> 
    <property name="icon" 
    value="edumatic/backoffice/view/modules/support/assets/book.png" /> 
    <property name="title" value="Assessments" /> 
    <property name="pluginID" value="EXAM" /> 
    </object> 
</value> 
<value> 
    <object class="edumatic.backoffice.view.modules.ContentModuleInfo"> 
    <property name="url" 
    value="edumatic/backoffice/view/modules/support/ExamsContentModule.swf" /> 
    <property name="pluginID" value="EXAM" /> 
    </object> 
</value> 

進入

<!--value> 
    <object class="edumatic.backoffice.view.modules.NavigationModuleInfo"> 
    <property name="url" 
    value="edumatic/backoffice/view/modules/support/ExamsNavigationModule.swf"/> 
    <property name="icon" 
    value="edumatic/backoffice/view/modules/support/assets/book.png" /> 
    <property name="title" value="Assessments" /> 
    <property name="pluginID" value="EXAM" /> 
    </object> 
</value> 
<value> 
    <object class="edumatic.backoffice.view.modules.ContentModuleInfo"> 
    <property name="url" 
    value="edumatic/backoffice/view/modules/support/ExamsContentModule.swf" /> 
    <property name="pluginID" value="EXAM" /> 
    </object> 
</value--> 

所以,基本上我需要註釋掉一整塊XML。我可以用替換任務來做到這一點嗎(將整個塊放在屬性標記中,並且值實際上不起作用)?或者有沒有一種快速的方法來讀取xml中的ant並刪除一些節點並再次保存xml?

搜索並替換它不是一個選項,因爲有多個值的孩子,並不是所有的孩子都需要被註釋掉。

添加一個屬性不是一個選項,因爲xml正在被IOC容器(Prana)解析。也許prana會忽略id =「1」,但它仍然是混亂的,我不喜歡長期的混亂。

回答

8

如果您可以通過正則表達式識別要替換的內容,我推薦使用可選任務replaceregexp。這裏是文檔:http://ant.apache.org/manual/Tasks/replaceregexp.html 你可以調用它兩次,一個用於開始標記,另一個用於結束標記。

更換正則表達式您可能有點麻煩,因爲你說你不想更換所有標籤,但我認爲這是最簡單的方法。

另一種選擇是創建一個自定義的ant任務來執行你想要的任務。

+0

嗯,事實上,我已經搜查了Ant任務手冊,發現這replaceregexp但不知道如何處理回車換行符或。將嘗試。自定義螞蟻任務會很好,但公司的時間就是金錢:-)。將在我的空閒時間做一些研究。謝謝。 – 2008-10-23 13:18:25

+0

管理使它與replaceregexp一起工作。在意識到需要s標誌之前,必須搜索一會兒!謝謝! – 2008-10-23 14:17:50

3

如果它是一個XML文件,那麼你也可以調用XSLT轉換