2010-06-17 2 views
5

Я совершенно новый для муравья и смотрел на задачи. Я пытаюсь создать файл xml. Нужно ли мне обращаться к внешнему процессу, или у муравья есть какой-то способ сделать это? Это может быть так же просто, как отправить строку в txt-файл и сохранить его как .xml. Является ли это возможным?Можете ли вы использовать Ant для сборки/изменения файлов XML?

+1

Не достаточная задача ['Replace'] (http://ant.apache.org/manual/Tasks/replace.html) для того, что вы хотите сделать? – tonio

+0

Спасибо, эти ответы очень полезны. – sarcasteak

ответ

5

Правильный ответ зависит от того, что вы на самом деле пытаетесь сделать.

Вы можете создать крошечный документ xml с помощью замены задачи и аргументов echo, но это очень сложно поддерживать очень быстро.

Если ваша цель состоит в том, чтобы сгенерировать XML-документ, который является главным образом шаблоном с заменой нескольких значений, тогда вы должны посмотреть на создание документа шаблона и затем с помощью задачи Copy with filtering.

Если вам нужно изменить структуру документа в зависимости от данных из Ant (или собраны из другого места), то использование задачи xslt будет лучше. Проблема с XSLT заключается в том, что она не всегда прямолинейна (XSLT использует функциональное программирование, а не процедурное программирование).

Вы можете найти правильный ответ write your own Ant task, который будет делать именно то, что вы хотите, именно так, как вы этого хотите.

Если вы можете лучше описать то, что вы пытаетесь достичь, я уверен, что кто-то будет счастлив предоставить более точный ответ.

+0

Спасибо, я пошел с копированием с фильтрацией, работает очень красиво! – sarcasteak

+0

Вопрос только о «краевом» вопросе - задача «copy-with-filter» корректно обрабатывает значения, содержащие специальные символы XML (<, & etc?) – monojohnny

+0

Копия с фильтром не указана - все, что она делает, это копирование байтов со значением подстановки. Фокус в том, что вы определяете значения внутри файла сборки XML. Если вы можете правильно определить значения в первую очередь, copy-with-filter заменит их в порядке. –

1

Вы можете сделать это, хотя мне кажется, что это скорее похоже на что-то, что вы хотели бы написать заранее, или что-то, что вы могли бы вызвать из Ant.

Задача будет:

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

Это, конечно, собирается быть утомительным, так как все должно быть экранированы, но вы можете сделать это.

4

Вы можете использовать задачу Replace, чтобы заменить данную строку в шаблоне и сохранить ее как xml. Простой пример, как показано в муравьиной документации:

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

Я использовал его, чтобы заменить постоянную @[email protected] фактическим идентификатором сборки в проекте Java, например.

Если вы хотите выполнить более сложную обработку, вы должны посмотреть на задачу XSLT. Foe пример, для создания документации, с date заменить на выходе, вы можете использовать что-то вроде:

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

Если вам нужно иметь дело с любым видом обработки XML в вашем рабочем процессе ant, рекомендуется использовать xmltask. Очень подробная документация и хорошая поддержка. Все, что вам нужно, это около XPATH knowledge. Здесь =>another helpful article

Смежные вопросы